-
Die vorliegende Erfindung bezieht
sich auf das Gebiet der Mehrprozessor-Computersysteme und genauer
gesagt auf die Leistung von Schreiboperationen in Mehrprozessor-Computersystemen.
-
Simultanverarbeitungs- bzw. Mehrprozessor-Computersysteme
enthalten zwei oder mehr Prozessoren, die verwendet werden können, um
Berechnungs- bzw. Verarbeitungsaufgaben durchzuführen. Eine bestimmte Berechnungsaufgabe
kann auf einem Prozessor ausgeführt
werden, während
andere Prozessoren Berechnungsaufgaben ausführen, die mit jener nicht in
Beziehung stehen. Alternativ können
Komponenten einer bestimmten Berechnungsaufgabe auf mehrere Prozessoren
verteilt werden, um die benötigte
Zeit zur Durchführung
der gesamten Berechnungsaufgabe zu verringern. Allgemein gesprochen
ist ein Prozessor eine Einrichtung bzw. ein Gerät, die bzw. das dazu eingerichtet
ist, eine Operation auf einem oder mehreren Operanden durchzuführen, um
ein Ergebnis zu erzeugen. Die Operation wird als Reaktion auf einen
Befehl, der vom Prozessor ausgeführt
wird, durchgeführt.
-
Eine weit verbreitete Architektur
in kommerziellen Simultanverarbeitungs-Computersystemen ist die
symmetrische Mehrprozessor-Architektur (Symmetric Multiprocessor
Architecture, SMP Architecture). Typischerweise umfaßt ein SMP-Computersystem
mehrere Prozessoren, die durch eine Cache-Hierarchie mit einem gemeinsam
genutzten Bus verbunden sind. Zusätzlich ist mit dem Bus ein
Speicher verbunden, der von den Prozessoren in dem System gemeinsam
genutzt wird. Der Zugriff auf irgendeine bestimmte Speicherstelle
innerhalb des Speichers erfolgt in einer ähnlichen Zeitspanne wie der
Zugriff auf irgendeine andere bestimmte Speicherstelle. Da auf jede
Stelle im Speicher in einer gleichförmigen bzw. einheitlichen Weise
zugegriffen werden kann, wird diese Struktur häufig als einheitliche Speicherarchitektur
bzw. Uniform Memory Architecture (UMA) bezeichnet.
-
Prozessoren werden häufig mit
internen Cachespeichern eingerichtet, und ein oder mehrere Cachespeicher
sind typischerweise in der Cache-Hierarchie zwischen den Prozessoren
und dem gemeinsam genutzten Bus in einem SMP-Computersystem enthalten.
Mehrere Kopien von Daten, die sich an einer bestimmten Hauptspeicheradresse
befinden, können
in diesen Cachespeichern gespeichert werden. Um das gemeinsam genutzte
Speichermodell zu erhalten bzw. aufrecht zu halten, in dem eine
bestimmte Adresse genau einen Datenwert zu jedem gegebenen Zeitpunkt
speichert, verwenden Computersysteme mit gemeinsam genutztem Bus
Cachekohärenz.
Allgemein gesprochen ist eine Operation kohärent, wenn die Auswirkungen
der Operation auf die gespeicherten Daten an einer bestimmten Speicheradresse
in jeder Kopie der Daten innerhalb der Cache-Hierarchie widergespiegelt werden. Wenn
zum Beispiel Daten, die an einer bestimmten Speicheradresse gespeichert
sind, aktualisiert werden, kann die Aktualisierung für die Cachespeicher,
welche die Kopien der vorherigen Daten speichern, bereitgestellt
werden. Alternativ können
die Kopien der vorherigen Daten in den Cachespeichern ungültig gemacht werden,
so daß ein
nachfolgender Zugriff auf die bestimmte Speicheradresse dazu führt, daß die aktualisierte
Kopie vom Hauptspeicher übermittelt
wird. Bei gemeinsam genutzten Bussystemen wird typischerweise ein
Mithör-
bzw. Snoop-Busprotokoll verwendet. Jede kohärente Transaktion, die über den
gemeinsam genutzten Bus ausgeführt
wird, wird gegen die Daten in den Cachespeichern geprüft (oder
"mitgehört").
Wenn eine Kopie der betroffenen Daten gefunden wird, wird der Zustand
des Cacheblocks bzw. der Cache-Zeile, der bzw. die die Daten enthält, als Reaktion
auf die kohärente
Transaktion aktualisiert.
-
Die internationale Patentanmeldung
WO 83 02180 A offenbart eine Datenkommunikationsanordnung, in der
ein Schnittstellenprozessor die Übermittlung
von Nachrichten zwischen zwei Prozessoren eines Mehrprozessorsystems
bewirkt. Der Schnittstellenprozessor ist mit den kommunizierenden
Prozessoren über
Schaltkreise für
direkten Speicherzugriff verbunden. Ein Prozessor speichert Nachrichten
in einem Sendepuffer im Speicher und steuert einen Zeiger im Speicher,
der die Beladung bzw. Ladung eines solchen Speichers anzeigt. Der
Schnittstellenprozessor liest diesen Zeiger und die Nachrichten und
schreibt einen Zeiger und die Nachrichten in einen Empfangspuffer
eines empfangenden Prozessors. Der Schnittstellenprozessor begrenzt
die Beladung von neuen Nachrichten in einen Sendepuffer, indem er
die Aktualisierung eines Entladezeigers, wodurch Speicherplatz für neue Nachrichten
erzeugt wird, verzögert,
bis der empfangende Prozessor die übermittelten Nachrichten verarbeitet
hat. Nachrichten können
auch verwendet werden, um die Übertragung
eines Blocks von Daten vom Speicher eines Prozessors zum dem eines
anderen einzuleiten. Die Initialisierung des Schnittstellenprozessors
ist eine gemeinsame Leistung der kommunizierenden Prozessoren.
-
Unglücklicherweise leiden gemeinsam
genutzte Busarchitekturen unter verschiedenen Nachteilen, die ihre
Brauchbarkeit bzw. ihren Nutzen in Simultanverarbeitungs-Computersystemen
beschränken
bzw. einschränken.
Ein Bus ist zu einer gewissen Spitzenbandbreite fähig (z.
B. eine Anzahl von Bytes/Sekunde, die über den Bus übermittelt
werden kann). Wenn zusätzliche
Prozessoren an den Bus angeschlossen werden, kann die Bandbreite,
die benötigt
wird, um die Prozessoren mit Daten und Befehlen zu versorgen, die
Busspitzenbandbreite übersteigen.
Da einige Prozessoren gezwungen werden, auf verfügbare Busbandbreite zu warten,
leidet die Leistungsfähigkeit
des Computersystems, wenn die Bandbreitenanforderungen der Prozessoren
die verfügbare
Busbandbreite übersteigen.
-
Darüber hinaus steigert das Hinzufügen von mehr
Prozessoren zu einem gemeinsam genutzten Bus die kapazitive Belastung
auf dem Bus und kann sogar dazu führen, daß die physikalische Länge des Busses
vergrößert wird.
Die erhöhte
kapazitive Belastung und die erweiterte Buslänge vergrößern die Verzögerung bzw.
Laufzeit beim Ausbreiten eines Signals über den Bus. Aufgrund der vergrößerten Signallaufzeit
kann die Ausführung
von Transaktionen länger
dauern. Daher kann die Spitzenbandbreite des Busses tatsächlich kleiner
werden, wenn mehr Prozessoren hinzugefügt werden.
-
Diese Probleme werden durch den anhaltenden
Anstieg der Betriebsfrequenzen und die Leistung der Prozessoren
weiter vergrößert. Die
angestiegene Leistung, die durch höhere Frequenzen ermöglicht wird,
und die weiter entwickelten Mikroarchitekturen von Prozessoren führen zu
höheren
Bandbreitenanforderungen als (bei) frühere(n) Prozessorgenerationen,
selbst bei der gleichen Anzahl von Prozessoren. Daher können Busse,
die zuvor eine ausreichende Bandbreite für ein Simultanverarbeitungs-Computersystem
zur Verfügung
gestellt haben, für
ein ähnliches
Computersystem, das die Prozessoren mit höherer Leistung verwendet, ungenügend sein.
-
Eine weitere Struktur für Simultanverarbeitungs-Computersysteme
ist eine verteilte, gemeinsam genutzte Speicherarchitektur. Eine
verteilte, gemeinsam genutzte Speicherarchitektur umfaßt mehrere
Knoten, innerhalb derer sich Prozessoren und Speicher befinden.
Die mehreren Knoten kommunizieren über ein Netzwerk, das zwischen
ihnen geschaltet ist. Wenn er als ein Ganzes betrachtet wird, bildet
der Speicher, der in den mehreren Knoten enthalten ist, den gemeinsam
genutzten Speicher für das
Computersystem. Typischerweise werden Verzeichnisse verwendet, um
anzuzeigen, welche Knoten Kopien von Daten im Cache haben, die einer
bestimmten Adresse entsprechen. Kohärenzaktivitäten können mittels Prüfens der
Verzeichnisse erzeugt werden.
-
Verteilte, gemeinsam genutzte Speichersysteme
sind skalierbar und überwinden
dadurch die Beschränkungen
der gemeinsam genutzten Busarchitektur. Da viele der Prozessorzugriffe
innerhalb eines Knotens abgeschlossen werden, haben Knoten typischerweise
viel niedrigere Bandbreitenanforderungen an das Netzwerk, als eine
gemeinsam genutzte Busarchitektur auf ihrem gemeinsam genutzten
Bus bereitstellen muß.
Die Knoten können
mit einer hohen Taktfrequenz und Bandbreite betrieben werden und
greifen auf das Netzwerk zu, wenn es nötig ist. Zusätzliche
Knoten können
zu dem Netzwerk hinzugefügt
werden, ohne die lokale Bandbreite der Knoten zu beeinflussen. Stattdessen
wird nur die Netzwerkbandbreite beeinflußt.
-
Unglücklicherweise ist ein Prozessorzugriff auf
Speicher in einem entfernten Knoten (d. h. einem anderen Knoten
als dem Knoten, der den Prozessor enthält) beträchtlich langsamer als ein Zugriff
auf Speicher innerhalb des Knotens. Insbesondere können Blockkopier-Operationen
in einem System mit verteiltem, gemeinsam genutztem Speicher schwerwiegende
Leistungseinbußen
erleiden. Typischerweise beziehen Blockkopier-Operationen das Lesen der
Daten aus einem Quellblock und das Speichern der Daten in einen
Zielblock ein. Ein Block ist durch das in dem Computersystem eingesetzte
Betriebssystem festgelegt und ist typischerweise einige Kilobyte
groß.
Der Prozessor führt
das Kopieren durch, indem er die Daten aus einem Quellblock liest
und die Daten in einen Zielblock speichert. Gewisse fortschrittliche
Prozessoren verwenden spezielle Befehle (Lesen und Schreiben eines
Stromes, Read and Write Stream), die Cacheblöcke bzw. Cache-Zeilen mit Daten
lesen und schreiben, ohne die Cachespeicher zu korrumpieren.
-
Wenn sich der Prozessor, der die
Blockkopier-Operation durchführt,
in dem Knoten befindet, der den Zielblock, aber nicht den Quellblock
besitzt, erfordert jedes Lesen aus dem Quellblock einen Zugriff
auf einen entfernten Knoten. Zugriffe auf entfernte Knoten sind
typischerweise langsam, und der entsprechende Schreibvorgang erfolgt
nicht, bevor die Daten zur Verfügung
gestellt bzw. geliefert wurden. Der Prozessor ist daher von bzw.
mit der Blockkopier-Operation für
eine beträchtliche
Zeitdauer belegt. Während
des größten Teils
der beträchtlichen Zeitdauer
wartet der Prozessor möglicherweise
auf Datenübertragung
von dem entfernten Knoten. Unglücklicherweise
wird der Pro zessor während
dieser Zeitspanne blockiert bzw. angehalten. Wenig, falls überhaupt,
nützliche
Arbeit wird von dem Mikroprozessor während dieser Zeitspanne verrichtet.
-
Der Durchsatz bei Blockkopier-Operationen ist
für viele
Betriebssysteme kritisch. Zum Beispiel hängt das UNIX-Betriebssystemen
im Hinblick auf hohe Leistungsfähigkeit
von einer effizienten Blockkopier-Operation ab. Es ist daher wünschenswert,
einen effizienten Blockkopier-Mechanismus zu haben, gerade in einer
verteilten, gemeinsam genutzten Speicherarchitektur.
-
Verschiedene Aspekte der Erfindung
sind in den begleitenden unabhängigen
und abhängigen
Patentansprüchen
dargelegt.
-
Die Probleme, die oben skizziert
sind, werden zum großen
Teil durch ein Computersystem entsprechend der vorliegenden Erfindung
gelöst.
Um ein Blockkopieren aus einem entfernten Quellblock in einen lokalen
Zielblock durchzuführen,
führt ein
Prozessor innerhalb des lokalen Knotens des Computersystems eine
speziell kodierte Schreiboperation durch. Diese Schreiboperation
signalisiert der Systemschnittstelle innerhalb des lokalen Knotens,
daß eine
Blockkopier-Operation angefordert wird; die Daten aus der Schreiboperation
werden verworfen. Die Systemschnittstelle führt beim Erkennen der speziell kodierten
Schreiboperation eine Leseoperation auf den Quellblock in dem entfernten
Knoten durch. Gleichzeitig bzw. daneben wird es der Schreiboperation
ermöglicht,
in dem lokalen Knoten zu Ende zu kommen, so daß der Prozessor mit nachfolgenden Verarbeitungsaufgaben
fortfahren kann, während
der lokale Knoten die Kopieroperation zu Ende führt. Vorteilhafterweise wird
das Lesen aus dem entfernten Knoten und die nachfolgende Speicherung
der Daten in dem lokalen Knoten durch die Systemschnittstelle in
dem lokalen Knoten, nicht jedoch von dem Prozessor, zu Ende geführt. Da
der Prozessor zusätzliche Aktivitäten durchführen kann,
während
das Kopieren abgeschlossen wird, kann die Leistungsfähigkeit
des Computersystems verbessert werden. Speziell kann der Prozessor
eine neue Blockkopier-Anforderung beginnen. Die neue Blockkopier-Anforderung
kann sich dann zumindest teilweise mit der ersten Blockkopier-Anforderung überlappen.
-
Nach einer spezifischen Ausführungsform wird
die speziell kodierte Schreiboperation durch Verwendung gewisser
höchstwertiger
Bits der Adresse der Schreiboperation angezeigt. Die Adresse gibt
die Zielkohärenzeinheit
innerhalb des lokalen Knotens an, und eine Übersetzung der Adresse in eine
globale Adresse gibt die Quellkohärenzeinheit an. Im Anschluß an den
Abschluß der
Kopieroperation kann auf die Zielkohärenzeinheit in dem lokalen
Knoten zugegriffen werden.
-
Allgemein gesprochen betrachtet die
vorliegende Erfindung ein Verfahren zum Durchführen von Blockkopier-Operationen
aus einem entfernten Verarbeitungsknoten in einen lokalen Verarbeitungsknoten
in einem Mehrprozessor-Computersystem. Ein Blockkopier-Schreibvorgang
auf mindestens eine Kohärenzeinheit
innerhalb eines Zielblocks wird durch einen Prozessor innerhalb
des lokalen Verarbeitungsknotens ausgeführt. Der lokale Verarbeitungsknoten
erkennt den Blockkopier-Schreibvorgang.
Auf das Erkennen hin erzeugt der lokale Knoten eine Leseanforderung,
die eine entsprechende Kohärenzeinheit
innerhalb eines Quellblocks identifiziert, der sich in dem entfernten
Verarbeitungsknoten befindet. Die erzeugte Leseanforderung wird
dann an den entfernten Verarbei tungsknoten übermittelt. Daten aus der entsprechenden
Kohärenzeinheit
werden in dem lokalen Verarbeitungsknoten empfangen und in die Kohärenzeinheit
innerhalb des Zielblocks gespeichert.
-
Die vorliegende Erfindung befaßt sich
ferner mit einer Vorrichtung zum Durchführen von Blockkopier-Operationen,
die einen Prozessor und eine Systemschnittstelle beinhaltet. Der
Prozessor enthält eine
Speicherverwaltungseinheit, die so eingerichtet ist, daß sie eine
virtuelle Adresse einer Speicheroperation in eine lokale physikalische
Adresse oder eine globale Adresse übersetzt. Die lokale physikalische Adresse
befindet sich in einem spezifischen, vordefinierten Adreßraum, wenn
eine Blockkopier-Operation durchgeführt werden soll. Angeschlossen,
um die Blockkopier-Operation
vom Prozessor zu empfangen, ist die Systemschnittstelle so eingerichtet,
daß sie
eine Übersetzung
von der lokalen physikalischen Adresse in eine globale Adresse durchführt. Darüber hinaus
ist die Systemschnittstelle dafür
ausgelegt, eine Leseanforderung einschließlich einer globalen Adresse über ein
Netzwerk für
die Blockkopier-Operation zu übermitteln.
Die Systemschnittstelle beinhaltet einen Übersetzungsspeicher, der Information zum
Durchführen
der Übersetzung
von der lokalen physikalischen Adresse in die globale Adresse seitenweise
speichert.
-
Die vorliegende Erfindung befaßt sich
darüber
hinaus mit einem Computersystem, das erste, zweite und dritte Verarbeitungsknoten
umfaßt.
Der erste Verarbeitungsknoten enthält einen Anforderungsagenten,
der dafür
eingerichtet ist, eine Leseanforderung für eine Kohärenzeinheit auf das Ausführen eines
Blockkopier-Schreibvorganges auf die Kohärenzeinheit durch einen Prozessor
innerhalb des ersten Verarbeitungsknotens hin durchzuführen. Der
zweite Verarbeitungsknoten enthält
einen Heimatagenten und ist so angeschlossen, daß er die Leseanforderung von
dem ersten Verarbeitungsknoten zu empfängt. Der zweite Verarbeitungsknoten
ist ein Heimatknoten für
die Kohärenzeinheit.
Der Heimatagent ist darauf eingerichtet, beim Empfang der Leseanforderung
einen Besitzer der Kohärenzeinheit
zu identifizieren. Der Heimatagent ist dafür ausgelegt, eine Anfrage zu übermitteln.
Der dritte Verarbeitungsknoten ist angeschlossen, um die Anfrage über einen
darin enthaltenen abhängigen
Agenten zu empfangen. Der abhängige
Agent ist darauf eingerichtet, der Kohärenzeinheit entsprechende Daten beim
Empfang der Anfrage an den ersten Verarbeitungsknoten zu übermitteln.
-
Die vorliegende Erfindung befaßt sich
darüber
hinaus mit einer Vorrichtung, die eingerichtet ist, um effiziente
Blockkopier-Operationen durchzuführen,
und einen Prozessor und eine Systemschnittstelle umfaßt. Der
Prozessor ist dafür
ausgelegt, einen Blockkopier-Schreibvorgang auf mindestens eine
Kohärenzeinheit
innerhalb eines Zielblocks einzuleiten. Der Zielblock befindet sich
innerhalb eines lokalen Verarbeitungsknotens, der den Prozessor enthält. Die
Systemschnittstelle ist dafür
ausgelegt, den Blockkopier-Schreibvorgang innerhalb des lokalen
Verarbeitungsknotens zu erkennen und eine Leseanforderung für eine entsprechende
Kohärenzeinheit
innerhalb eines Quellblocks, den innerhalb eines entfernten Verarbeitungsknotens
liegt, zu übermitteln.
Die Systemschnittstelle übermittelt
die Leseanforderung auf das Erkennen eines Blockkopier-Schreibvorgangs
hin. Zusätzlich
ist die Systemschnittstelle ferner dafür eingerichtet, Daten aus der entsprechenden
Kohärenzeinheit
des Quellblocks zu empfangen und die Daten in die Kohärenzeinheit
innerhalb des Zielblocks zu speichern.
-
Überdies
befaßt
sich die vorliegende Erfindung mit einem Verfahren zum Durchführen von Blockkopier-Vorgängen. Ein
Blockkopier-Kommando wird über
einen Prozessor eingeleitet. Das Blockkopier-Kommando gibt eine
erste Kohärenzeinheit
innerhalb eines Quellblocks und eine zweite Kohärenzeinheit innerhalb eines
Zielblocks an. Daten, die der ersten Kohärenzeinheit entsprechen, werden
aus einem ersten Verarbeitungsknoten, der den Quellblock speichert,
an einen zweiten Verarbeitungsknoten, der den Zielblock speichert, übertragen.
Die Daten werden dann in die erste Kohärenzeinheit gespeichert.
-
Die vorliegende Erfindung befaßt sich
ferner mit einer Vorrichtung zum Durchführen von Blockkopier-Vorgängen, die
einen Prozessor und eine Systemschnittstelle beinhaltet. Der Prozessor
ist dafür eingerichtet,
ein Blockkopier-Kommando auszuführen,
das eine erste Kohärenzeinheit
innerhalb eines Quellblocks und eine zweite Kohärenzeinheit innerhalb eines
Zielblocks angibt. Angeschlossen, um das Blockkopier-Kommando zu
empfangen, ist die Systemschnittstelle darauf eingerichtet, als
Reaktion auf das Blockkopier-Kommando Daten aus der ersten Kohärenzeinheit
an die zweite Kohärenzeinheit
zu übertragen.
-
Andere Ziele bzw. Zwecke und Vorteile
der Erfindung werden beim Lesen der folgenden, detaillierten Beschreibung
und unter Bezug auf die begleitenden Zeichnungen offensichtlich,
in denen:
-
1 ein
Blockdiagramm eines Simultanverarbeitungs-Computersystems darstellt.
-
1A eine
konzeptionelles Blockdiagramm ist, das eine Non-Uniform Memory Architecture (nicht-einheitliche
Speicherarchitektur) darstellt, welche von einer Ausführungsform
des in 1 abgebildeten
Computersystems unterstützt
wird.
-
1B ein
konzeptionelles Blockdiagramm ist, das eine Cache-Only Memory Architecture
(ausschließlich
Cachespeicher umfassende Speicherarchitektur) darstellt, welche
von einer Ausführungsform
des in 1 abgebildeten
Computersystems unterstützt
wird.
-
2 ein
Blockdiagramm einer Ausführungsform
eines in 1 abgebildeten,
symmetrischen Simultanverarbeitungsknotens ist.
-
2A einen
beispielhaften Verzeichniseintrag darstellt, der in einer Ausführungsform
eines in 2 abgebildeten
Verzeichnisses gespeichert ist.
-
3 ein
Blockdiagramm einer Ausführungsform
einer Systemschnittstelle ist, die in 1 abgebildet
ist.
-
4 ein
Diagramm ist, das Aktivitäten
darstellt, die als Reaktion auf eine typische Kohärenzoperation
zwischen einem Anforderungsagenten, einem Heimatagenten und einem
abhängigen
Agenten durchgeführt
werden.
-
5 eine
beispielhafte Kohärenzoperation darstellt,
die als Reaktion auf eine Leseanforderung zum Zweck des Besitzens
bzw. Read-to-Own-Anforderung von einem Prozessor durchgeführt wird.
-
6 ein
Flußdiagramm
ist, das einen beispielhaften Zustandsautomaten bzw. Zustandsmaschine
für eine
Ausführungsform
eines in 3 abgebildeten
Anforderungsagenten darstellt.
-
7 ein
Flußdiagramm
ist, das einen beispielhaften Zustandsautomaten für eine Ausführungsform
eines in 3 abgebildeten
Heimatagenten darstellt.
-
8 ein
Flußdiagramm
ist, das einen beispielhaften Zustandsautomaten für eine Ausführungsform
eines in 3 abgebildeten,
abhängigen Agenten
darstellt.
-
9 eine
Tabelle ist, die Typen von Anforderungen gemäß einer Ausführungsform
der Systemschnittstelle auflistet.
-
10 eine
Tabelle ist, die Typen von Aufforderungen bzw. Anfragen gemäß einer
Ausführungsform
der Systemschnittstelle auflistet.
-
11 eine
Tabelle ist, die Typen von Antworten gemäß einer Ausführungsform
der Systemschnittstelle auflistet.
-
12 eine
Tabelle ist, die Typen von Abschlüssen bzw. Beendigungen gemäß einer
Ausführungsform
der Systemschnittstelle auflistet.
-
13 eine
Tabelle ist, die Kohärenzoperationen
als Reaktion auf verschiedene Operationen, die von einem Prozessor
durchgeführt
werden, gemäß einer
Ausführungsform
der Systemschnittstelle beschreibt.
-
14 ein
Diagramm ist, das einen lokalen physikalischen Adreßraum einschließlich Pseudonymen
bzw. Aliasnamen darstellt.
-
15 ein
Flußdiagramm
ist, das Schritte beschreibt, die von einem Prozessor innerhalb
des in 1 abgebildeten
Computersystems ausgeführt werden,
um eine Blockkopier-Operation gemäß einer Ausführungsform
durchzuführen.
-
16 ein
Flußdiagramm
ist, das Schritte beschreibt, die von einer Systemschnittstelle
innerhalb des in 1 abgebildeten
Computersystems ausgeführt
werden, um eine Blockkopier-Operation gemäß einer
Ausführungsform
durchzuführen.
-
17 ein
Blockdiagramm eines Teils einer Ausführungsform eines in 1 abgebildeten SMP-Knotens
ist, das die Durchführung
einer Blockkopier-Operation darstellt.
-
18 ein
Diagramm ist, das Kohärenzaktivitäten, die
von einer Ausführungsform
des in 1 abgebildeten
Computersystems als Reaktion auf eine Blockkopier-Operation durchgeführt werden.
-
19 ein
Zeitdiagramm ist, das Blockkopier-Operationen darstellt, die ohne
den Vorteil des Verfahrens und der Methode, die in den 15, 16 und 17 dargestellt
sind, durchgeführt
werden.
-
20 ein
Zeitdiagramm ist, das Blockkopier-Operationen darstellt, die entsprechend
dem Verfahren und der Methode, die in den 15, 16 und 17 dargestellt sind, durchgeführt werden.
-
Während
bei der Erfindung verschiedene Modifikationen und alternative Gestaltungen
möglich sind,
werden spezifische Ausprägungsformen
davon als Beispiel in den Zeichnungen dargestellt und hier genauer
beschrieben. Es ist jedoch so zu verstehen, daß die Zeichnungen und detaillierten
Beschreibungen dazu nicht dafür
gedacht sind, die Erfindung auf die bestimmte, offenbarte Ausgestaltung
einzuschränken,
sondern die Erfindung soll im Gegenteil alle Modifikationen, Äquivalenzen
und Alternativen abdecken, die in den Anwendungs- bzw. Schutzbereich
der vorliegenden Erfindung, wie in den angefügten Ansprüchen definiert, fallen.
-
Gemäß 1 ist ein Blockdiagramm einer Ausführungsform
eines Simultanverarbeitungs-Computersystem 10 dargestellt.
Das Computersystem 10 umfaßt mehrere SMP-Knoten 12A–12D,
die durch ein Punkt-zu-Punkt-Netzwerk 14 miteinander verbunden
sind. Auf Elemente, die hier mit einer bestimmten Bezugszahl gefolgt
von einem Buchstaben bezeichnet werden, wird durch die Bezugszahl
allein kollektiv Bezug genommen. Zum Beispiel werden die SMP-Knoten 12A–12D kollektiv
als SMP-Knoten 12 bezeichnet. In der abgebildeten Ausführungsform enthält jeder
SMP-Knoten 12 mehrere
Prozessoren, externe Cachespeicher, einen SMP-Bus, einen Speicher
und eine Systemschnittstelle. Zum Beispiel ist der SMP-Knoten 12A mit
mehreren Prozessoren einschließlich
der Prozessoren 16A–16B eingerichtet. Die
Prozessoren 16 sind mit den externen Cachespeichern 18 verbunden,
die darüber
hinaus an einen SMP-Bus 20 angeschlossen sind. Zusätzlich sind
ein Speicher 22 und eine Systemschnittstelle 24 an
den SMP-Bus 20 angeschlossen. Weiterhin können ein oder
mehrere Ein-/Ausgabe (Input/Output, I/O) Schnittstellen 26 an
den SMP-Bus 20 angeschlossen sein. Die I/O-Schnittstellen 26 werden
benutzt, um die Schnittstelle zu Peripheriegeräten bzw. -einrichtungen wie
seriellen und parallelen Ports, Plattenlaufwerken, Modems, Drucker
etc. zu bilden. Andere SMP-Knoten 12A–12D können ähnlich eingerichtet sein.
-
Allgemein gesprochen ist das Computersystem 10 dafür optimiert,
Schreiboperationen von einem lokalen SMP-Knoten 12 zu einem
entfernten SMP-Knoten 12 durchzuführen. Ein Prozessor 16 innerhalb
des lokalen SMP-Knotens 12 führt eine Schreiboperation mit
einer spezifischen Kodierung durch, die anzeigt, daß die Schreiboperation
unter Verwendung eines "schnellen Schreib"-Protokolls durchgeführt werden soll. Die Systemschnittstelle 24 speichert
die Schreiboperation beim Erkennen der "schnellen Schreib"- bzw.
"Fast-Write"-Schreiboperation und ermöglicht auch die Übertragung
der Daten, die zur Schreiboperation gehören, vom Prozessor in die Systemschnittstelle.
In diesen Fall werden die Daten vor der Durchführung von Kohärenzoperationen zum
Erlangen der Eigentümerschaft
an der Kohärenzeinheit,
die von der Schreiboperation betroffen ist (z. B. um die Schreibberechtigung
auf eine Kohärenzeinheit
zu erlangen), übertragen.
Vorteilhafterweise schließt
der Prozessor 16 die Schreiboperation schnell ab. Ressourcen
innerhalb des Prozessors 16 werden zur Verwendung in nachfolgenden
Operationen freigegeben. Die Leistung des Computersystems kann dadurch,
daß Prozessorressourcen
schneller freigegeben werden, als es früher möglich war, erhöht werden.
-
Nach einer bestimmten Ausführungsform zeigen
gewisse der höchstwertigen
Bits der Adresse, die von Prozessor 16 dem SMP-Bus 20 übergeben werden,
an, daß das
schnelle Schreibprotokoll für eine
bestimmte Schreiboperation benutzt werden soll. Die verbleibenden
Bits legen den Zielknoten und die lokale physikalische Adresse fest,
die eine Zielspeicherstelle innerhalb des Speichers 22 des
Zielknotens bestimmen. Alternativ können die verbleibenden Bits
eine globale Adresse darstellen, die einen entfernten Knoten bestimmen,
der die betroffene Kohärenzeinheit
speichert. Darüber
hinaus ist das schnelle Schreibprotokoll nach der bestimmten Ausführungsform
auf Schreibstrom- bzw. Write-Stream-Operationen beschränkt. Schreibstromoperationen
aktualisieren eine gesamte Kohärenzeinheit.
Daher braucht der Prozessor 16, der eine Schreibstromoperationen
durchführt,
keine Kopie der Kohärenzeinheit
zum Aktualisieren zu erhalten. Das schnelle Schreib protokoll beseitigt
darüber
hinaus die Reihenfolgeanforderungen für die Schreibstromoperationen,
wodurch es möglich
wird, daß diese Operationen
schnell aus dem Prozessor 16 entfernt werden. Diese Schreibstromoperationen
sind untereinander, aber nicht bezüglich der anderen Operationen,
die vom Prozessor 16 durchgeführt werden, geordnet.
-
Allgemein gesprochen ist eine Speicheroperation
eine Operation, die eine Übertragung
von Daten von einer Quelle zu einem Ziel veranlaßt. Die Quelle und/oder das
Ziel können
Speicherstellen innerhalb des Initiators oder Speicherstellen innerhalb des
Speichers sein. Wenn eine Quelle oder ein Ziel eine Speicherstelle
innerhalb des Speichers ist, wird die Quelle oder das Ziel mittels
einer Adresse, die mit der Speicheroperation übermittelt wird, bestimmt. Speicheroperationen
können
Lese- oder Schreiboperationen sein. Eine Leseoperation veranlaßt die Übertragung
von Daten von einer Quelle außerhalb des
Initiators zu einem Ziel innerhalb des Initiators. Umgekehrt veranlaßt eine
Schreiboperation die Übertragung
von Daten von einer Quelle innerhalb des Initiators zu einem Ziel
außerhalb
des Initiators. In dem in 1 abgebildeten
Computersystem kann eine Speicheroperation sowohl eine oder mehrere Transaktionen
auf dem SMP-Bus 20 als auch eine oder mehrere Kohärenzoperationen
auf dem Netzwerk 14 beinhalten.
-
Architekturübersicht
-
Jeder SMP-Knoten 12 ist
im wesentlichen ein SMP-System mit einem Speicher 22 als
dem gemeinsam genutzten Speicher. Die Prozessoren 16 sind
Hochleistungsprozessoren. Nach einer Ausführungsform ist jeder Prozessor 16 ein
mit Version 9 der SPARC-Prozessorarchitektur konformer SPARC-Prozessor.
Es wird jedoch darauf hingewiesen, daß jede beliebige Prozessorarchitektur
von den Prozessoren 16 verwendet werden kann.
-
Typischerweise enthalten die Prozessoren 16 interne
Befehls- und Daten-Cachespeicher. Daher werden die externen Cachespeicher 18 als
L2- Cachespeicher bezeichnet (für
Stufe 2, wobei die internen Cachespeicher die Stufe-1-Cachespeicher
sind). Wenn die Prozessoren 16 nicht mit internen Cachespeichern
eingerichtet sind, dann sind die externen Cachespeicher 18 die
Stufe-1-Cachespeicher.
Es wird darauf hingewiesen, daß die
"Stufen"-Nomenklatur verwendet wird, um die Nähe eines bestimmten Cachespeichers
zum Verarbeitungskern innerhalb von Prozessor 16 anzugeben.
Stufe 1 ist die näheste
am Verarbeitungskern, Stufe 2 ist die nächst näheste, etc. Die externen Cachespeicher 18 ermöglichen
schnellen Zugriff auf Speicheradressen, auf die von dem daran angeschlossenen
Prozessor 16 häufig
zugegriffen wird. Es wird darauf hingewiesen, daß die externen Cachespeicher 18 in
jeder beliebigen einer Vielfalt von speziellen Cacheanordnungen eingerichtet
werden können.
Zum Beispiel können mengenassoziative
oder direkt abgebildete Konfigurationen von den externen Cachespeichern 18 verwendet
werden.
-
Der SMP-Bus 20 unterstützt die
Kommunikation zwischen den Prozessoren 16 (durch die Cachespeicher 18),
dem Speicher 22, der Systemschnittstelle 24 und
der I/O-Schnittstelle 26. Nach einer Ausführungsform
enthält
der SMP-Bus 20 sowohl einen Adreßbus und zugehörige Steuersignale
als auch einen Datenbus und zugehörige Steuersignale. Da die
Adreß-
und Datenbusse getrennt sind, kann ein geteiltes Transaktionsbusprotokoll
bzw. ein Split-Transaction-Busprotokoll auf dem SMP-Bus 20 angewandt
werden. Allgemein gesprochen ist ein geteiltes Transaktionsbusprotokoll
ein Protokoll, in dem eine Transaktion, die auf dem Adreßbus erfolgt,
sich von einer gleichzeitigen Transaktion, die auf dem Datenbus
erfolgt, unterscheiden kann. Transaktionen, die eine Adresse und
Daten einbeziehen, umfassen eine Adreßphase, in welcher die Adresse
und die zugehörige
Steuerinformation auf dem Adreßbus
transportiert wird, und eine Datenphase, in welcher die Daten auf
dem Datenbus transportiert werden. Zusätzliche Adreßphasen
und/oder Datenphasen für andere
Transaktionen können
vor der Datenphase, die einer bestimmten Adreßphase entspricht, eingeleitet
werden. Eine Adreßphase
und die entsprechende Datenphase können in verschiedener Art und Weise
miteinander korreliert werden. Zum Beispiel können Datentransaktionen in
derselben Reihenfolge erfolgen, in der die Adreßtransaktionen erfolgen. Alternativ
können
die Adreß-
und Datenphasen einer Transaktion mittels eines eindeutigen Tags
bezeichnet werden.
-
Der Speicher 22 ist dafür eingerichtet,
Daten und Befehlscode zum Gebrauch durch die Prozessoren 16 zu
speichern. Der Speicher 22 umfaßt vorzugsweise dynamischen,
wahlfrei zugreifbaren Speicher (Dynamic Random Access Memory, DRAM),
obwohl jede beliebige Art von Speicher verwendet werden kann. Der
Speicher 22 bildet in Verbindung mit den ähnlich dargestellten
Speichern in den anderen SMP-Knoten 12 eine verteiltes,
gemeinsam genutztes Speichersystem. Jede Adresse in dem Adreßraum des
verteilten, gemeinsam genutzten Speichers ist einem bestimmten Knoten
zugewiesen, der als der Heimatknoten der Adresse bezeichnet wird. Ein
Prozessor innerhalb eines anderen Knotens als des Heimatknotens
kann auf die Daten an einer Adresse des Heimatknotens zugreifen
und dabei möglicherweise
die Daten im Cache speichern. Somit wird die Kohärenz sowohl zwischen den SMP-Knoten 12 als
auch zwischen den Prozessoren 16 und den Cachespeichern 18 innerhalb
eines bestimmten SMP-Knotens 12A–12D aufrecht erhalten. Die
Systemschnittstelle 24 sorgt für Kohärenz zwischen Knoten, während das
Mitlesen bzw. Snooping auf dem SMP-Bus 20 für Kohärenz innerhalb von Knoten sorgt.
-
Über
das Aufrechterhalten der Kohärenz zwischen
Knoten hinaus erkennt die Systemschnittstelle 24 Adressen
auf dem SMP-Bus 20, die eine Datenübertragung an einen oder von
einem anderen SMP-Knoten 12 erforderlich machen. Die Systemschnittstelle 24 führt die Übertragung
durch und stellt die entsprechenden Daten für die Übertragung auf dem SMP-Bus 20 bereit.
Nach der abgebildeten Ausführungsform
ist die Systemschnittstelle 24 an ein Punkt-zu-Punkt-Netzwerk 14 angeschlossen.
Es wird jedoch darauf hingewiesen, daß nach alternativen Ausführungsformen
andere Netzwerke verwendet werden können. In einem Punkt-zu-Punkt-Netzwerk sind
individuelle Verbindungen zwischen allen Knoten in dem Netzwerk
vorhanden. Ein bestimmter Knoten kommuniziert direkt mit einem zweiten
Knoten über
einen dedizierten Knoten. Um mit einem dritten Knoten zu kommunizieren,
macht der betreffende Knoten von einer anderen Verbindung Gebrauch
als derjenigen, die zur Kommunikation mit dem zweiten Knoten verwendet
wird.
-
Es wird darauf hingewiesen, daß Ausführungsformen
des Computersystems 10, die irgendeine beliebige Anzahl
von Knoten verwenden, betrachtet werden, auch wenn in 1 vier SMP-Knoten 12 abgebildet
sind.
-
Die 1A und 1B sind konzeptionelle Darstellungen
von verteilten Speicherarchitekturen, die von einer Ausführungsform
des Computersystems 10 unterstützt werden. Speziell stellen
die 1A und 1B alternative Arten und
Weisen dar, in denen jeder SMP-Knoten 12 aus 1 Daten im Cache speichern
und Speicherzugriffe durchführen
kann. Details bezüglich
der Art, in der das Computersystem 10 solche Zugriffe unterstützt, werden
unten genauer beschrieben.
-
Gemäß 1A ist ein logisches Diagramm einer ersten
Speicherarchitektur 30 dargestellt, die von einer Ausführungsform
des Computersystems 10 unterstützt wird. Die Architektur 30 enthält mehrere
Prozessoren 32A–32D,
mehrere Cachespeicher 34A–34D, mehrere Speicher 36A–36D und
ein Verbindungsnetzwerk 38. Die mehreren Speicher 36 bilden
einen verteilten, gemeinsam genutzten Speicher. Jede Adresse innerhalb
des Adreßraumes
entspricht einer Speicherstelle innerhalb eines der Speicher 36.
-
Die Architektur 30 ist eine
nicht-einheitliche bzw. nicht-gleichförmige Speicherarchitektur bzw. eine
Non-Uniform Memory Architecture (NUMA). In einer NUMA-Architektur
kann die benötigte
Zeit zum Zugriff auf eine erste Speicheradresse wesentlich verschieden
sein von der benötigten
Zeit für
den Zugriff auf eine zweite Speicheradresse. Die Zugriffszeit ist
abhängig
vom Ursprung der Zugriffs und von der Lage bzw. Stelle des Speichers 36A–36D,
welcher die Daten, auf die zugegriffen wird, speichert. Wenn zum
Beispiel Prozessor 32A auf eine erste Speicheradresse zugreift,
die in Speicher 36A gespeichert ist, kann die Zugriffszeit
bedeutend kürzer
sein als die Zugriffszeit für
einen Zugriff auf eine zweite Speicheradresse, die in einem der
Speicher 36B–36D gespeichert
ist. Das heißt,
ein Zugriff von Prozessor 32A auf den Speicher 36A kann
lokal erledigt werden (z. B. ohne Übertragung auf dem Netzwerk 38),
während ein
Zugriff von Prozessor 32A auf den Speicher 36B über das
Netzwerk 38 durchgeführt
wird. Typischerweise ist ein Zugriff über das Netzwerk 38 langsamer als
ein Zugriff, der innerhalb eines lokalen Speichers erledigt wird.
Zum Beispiel könnte
ein lokaler Zugriff in wenigen Hundert Nanosekunden abgeschlossen werden,
während
ein Zugriff über
das Netzwerk wenige Mikrosekunden benötigen könnte.
-
Daten, die in entfernten Knoten gespeicherten
Adressen entsprechen, können
in irgendeinem der Cachespeicher 34 gespeichert werden.
Sobald jedoch ein Cachespeicher 34 die Daten, die einer
solchen entfernten Adresse entsprechen, verwirft, wird ein nachfolgender
Zugriff auf die entfernte Adresse mittels einer Übertragung über das Netzwerk 38 absolviert.
-
NUMA-Architekturen können ausgezeichnete
Leistungsmerkmale für
Softwareanwendungen zur Verfügung
stellen, die Adressen verwenden, die in erster Linie einem bestimmten
lokalen Speicher entsprechen. Softwareanwendungen, die zufälligere bzw.
willkürlichere
Zugriffsmuster aufweisen und die ihre Speicherzugriffe nicht auf
Adressen innerhalb eines bestimmten lokalen Speichers einschränken, können andererseits
eine große
Menge von Netzwerkverkehr erfahren, wenn ein bestimmter Prozessor 32 wiederholte
Zugriffe auf entfernte Knoten durchführt.
-
Gemäß 1B ist ein logisches Diagramm einer zweiten
Speicherarchitektur 40 dargestellt, die vom in 1 abgebildeten Computersystem 10 unterstützt wird.
Die Architektur 40 enthält
mehrere Prozessoren 42A–42D, mehrere Cachespeicher 44A–44D,
mehrere Speicher 46A-46D und
das Netzwerk 48. Die Speicher 46 sind jedoch logisch
zwischen die Cachespeicher 44 und das Netzwerk 48 geschaltet.
Die Speicher 46 dienen als größere Cachespeicher (z. B. ein
Stufe-3-Cache),
die Adressen speichern, auf die von den entsprechenden Prozessoren 42 zugegriffen
wird. Man sagt, die Speicher 46 "ziehen" die Daten "an",
mit denen von einem entsprechenden Prozessor 42 operiert
wird. Im Gegensatz zu der in 1A abgebildeten
NUMA-Architektur reduziert die Architektur 40 die Anzahl
von Zugriffen über
das Netzwerk 48, indem entfernte Daten im lokalen Speicher
gespeichert werden, wenn der lokale Prozessor auf diese Daten zugreift.
-
Die Architektur 40 wird
als Nur-Cache-Speicherarchitektur bzw. Cache-Only Memory Architecure
(COMA) bezeichnet. Mehrere Stellen innerhalb des verteilten, gemeinsam
genutzten Speichers, der durch die Kombination der Speicher 46 gebildet
wird, können
Daten, die einer bestimmten Adresse entsprechen, speichern. Es ist
keine permanente Abbildung einer bestimmten Adresse zu einer bestimmten Speicherstelle
zugewiesen. Stattdessen ändert
sich die Stelle, die einer bestimmten Adresse entsprechende Daten
speichert, dynamisch abhängig
von den Prozessoren 42, die auf diese bestimmte Adresse
zugreifen. Umgekehrt ist in der NUMA-Architektur eine bestimmte
Speicherstelle innerhalb der Speicher 46 einer bestimmten
Adresse zugewiesen. Die Architektur 40 paßt sich
den Speicherzugriffsmustern an, die von Anwendungen, die darauf
ausgeführt werden,
durchgeführt
werden, und die Kohärenz
zwischen den Speichern 46 wird aufrecht erhalten.
-
Nach einer bevorzugten Ausführungsform unterstützt das
Computersystem 10 beide Speicherarchitekturen, die in den 1A und 1B abgebildet sind. Insbesondere kann
auf eine Speicheradresse in einer NUMA-Art und Weise von einem SMP-Knoten 12A–12D zugegriffen
werden, während
auf sie in einer COMA-Art und Weise von einem anderen SMP-Knoten 12A–12D zugegriffen
wird. Nach einer Ausführungsform
wird ein NUMA-Zugriff erkannt, wenn bestimmte Bits der Adresse auf
dem SMP-Bus 20 einen anderen SMP-Knoten 12 als
den Heimatknoten der überreichten
Adresse bezeichnen. Ansonsten wird von einem COMA-Zugriff ausgegangen. Zusätzliche
Details werden unten dargelegt.
-
Nach einer Ausführungsform wird die COMA-Architektur
unter Verwendung einer Kombination von Hardware- und Software-Techniken
implementiert. Hardware erhält
die Kohärenz
zwischen den lokal im Cache gespeicherten Kopien von Seiten, und Software
(z. B. das im Computersystem 10 eingesetzte Betriebssystem)
ist für
das Zuordnen bzw. Reservieren und Aufheben der Zuordnung bzw. Freigeben
von Cacheseiten verantwortlich.
-
2 stellt
Details einer Implementierung eines SMP-Knotens 12A dar,
der im allgemeinen dem in 1 abgebildeten
SMP-Knotens 12A entspricht. Andere Knoten 12 können ähnlich eingerichtet
sein. Es wird darauf hingewiesen, daß alternative, spezifische
Implementierungen jedes SMP-Knotens 12 aus 12 ebenso möglich sind. Die Implementierung des
SMP-Knotens 12A, die in 2 abgebildet
ist, enthält
mehrere Unterknoten wie die Unterknoten 50A und 50B.
Jeder Unterknoten 50 beinhaltet zwei Prozessoren 16 und
entsprechende Cachespeicher 18, einen Speicheranteil 56,
eine Adreßsteuerung 52 und
eine Datensteuerung 54. Die Speicheranteile 56 innerhalb
der Unterknoten 50 bilden gemeinsam den Speicher 22 des
SMP-Knotens 12A aus 1.
Andere Unterknoten (nicht abgebildet) sind darüber hinaus an den SMP-Bus 20 angeschlossen,
um die I/O-Schnittstellen 26 zu bilden.
-
Wie in 2 dargestellt
beinhaltet der SMP-Bus 20 einen Adreßbus 58 und einen
Datenbus 60. Eine Adreßsteuerung 52 ist
an den Adreßbus 58 angeschlossen,
und eine Datensteuerung 54 ist an den Datenbus 60 angeschlossen. 2 veranschaulicht auch die
Systemschnittstelle 24, die einen Logikblock 62 der
Systemschnittstelle, einen Übersetzungsspeicher 64,
ein Verzeichnis 66 und ein Speicher-Tag (MTAG) 68 beinhaltet.
Der Logikblock 62 ist sowohl an den Adreßbus 58 als
auch an den Datenbus 60 angeschlossen und setzt bzw. bestätigt ein
Ignoriersignal 70 auf dem Adreßbus 58 unter gewissen Bedingungen,
wie weiter unten erläutert
wird. Darüber
hinaus ist der Logikblock 62 an den Übersetzungsspeicher 64,
das Verzeichnis 66, das MTAG 68 und das Netzwerk 14 angeschlossen.
-
Für
die Ausführungsform
von 2 ist jeder Unterknoten 50 auf
einer Platine (Printed Circuit Board) eingerichtet, die in eine
Rückwand
bzw. Backplane, auf der der SMP-Bus 20 liegt, eingesetzt
wird. Auf diese Weise kann die Anzahl von Prozessoren und/oder I/O-Schnittstellen
26, die in einem SMP-Knoten 12 enthalten sind, durch Einsetzen
oder Entfernen von Unterknoten 50 variiert werden. Zum Beispiel
kann das Computersystem 10 anfänglich mit einer kleinen Anzahl
von Unterknoten 50 eingerichtet werden. Zusätzliche
Unterknoten 50 können
von Zeit zu Zeit hinzugefügt
werden, wenn die von den Benutzern des Computersystems 10 benötigte Rechenleistung
wächst.
-
Die Adreßsteuerung 52 stellt
eine Schnittstelle zwischen den Cachespeichern 18 und dem Adreßanteil
des SMP-Busses 20 zur Verfügung. Nach der abgebildeten
Ausführungsform
beinhaltet die Adreßsteuerung 52 eine
Ausgangswarteschlange 72 und eine gewisse Anzahl von Eingangswarteschlangen 74.
Die Ausgangswarteschlange 72 puffert Transaktionen von
den Prozessoren, die damit verbunden sind, bis der Adreßsteuerung 52 Zugriff auf
den Adreßbus 58 gewährt wird.
Die Adreßsteuerung 52 führt die
Transaktionen, die in der Ausgangswarteschlange 72 gespeichert
sind, in der Reihenfolge durch, in der sie in die Ausgangswarteschlange 72 gestellt
wurden (d. h. die Ausgangswarteschlange 72 ist eine FIFO-Warteschlange).
Sowohl die Transaktionen, die von der Adreßsteuerung 52 durchgeführt werden,
als auch die Transaktionen, die vom Adreßbus 58 empfangen
und von den Cachespeichern 18 und den Cachespeichern innerhalb
der Prozessoren 16 mitgelesen werden sollen, werden in
die Eingangswarteschlange 74 gestellt.
-
Ähnlich
zur Ausgangswarteschlange 72 ist die Eingangswarteschlange 74 eine
FIFO-Warteschlange.
Alle Adreßtransaktionen
werden in der Eingangswarteschlange 74 jedes Unterknotens 50 gespeichert
(sogar innerhalb der Eingangswarteschlange 74 desjenigen
Unterknotens 50, der die Adreßtransaktion einleitet). Adreßtransaktionen
werden folglich an die Cachespeicher 18 und die Prozessoren 16 zum
Mitlesen in derselben Reihenfolge überreicht, in der sie auf dem
Adreßbus 58 auftreten.
Die Reihenfolge, in der Transaktionen auf dem Adreßbus 58 auftreten,
ist die Reihenfolge für
dem SMP-Knoten 12A. Jedoch wird von dem gesamten System
angenommen, daß es
eine einzige globale Speicherreihenfolge hat. Diese Erwartung einer
Anordnung erzeugt sowohl in der NUMA- als auch in der COMA-Architektur,
die vom Computersystem 10 eingesetzt bzw. angewandt wird,
Probleme, da die globale Reihenfolge möglicherweise aufgrund der Reihenfolge
von Operationen auf dem Netzwerk 14 bereitgestellt werden
muß. Wenn
zwei Knoten eine Transaktion auf bzw. für einer) Adresse durchführen, definiert die
Reihenfolge, in der die entsprechenden Kohärenzope- rationen beim Heimatknoten für die Adresse auftreten,
die Reihenfolge der zwei Transaktionen, wie sie in jedem Knoten
gesehen wird. Wenn zum Beispiel zwei Schreiboperationen für dieselbe
Adresse durchgeführt
werden, dann sollte die zweite Schreiboperation, die beim Heimatknoten
der Adresse eintrifft, die zweite Schreibtransaktion sein, die abgeschlossen
bzw. erledigt wird (d. h. eine Bytespeicherstelle, die von beiden
Transaktionen aktualisiert wird, speichert zum Abschluß beider
Transaktionen einen Wert, der von der zweiten Transaktion bereitgestellt
wird). Jedoch kann bei dem Knoten, der die zweite Transaktion durchführt, tatsächlich die
zweite Transaktion zuerst auf dem SMP-Bus 20 aufgetreten sein.
Das Ignoriersignal 70 ermöglicht es, daß die zweite
Transaktion an die Systemschnittstelle 24 übermittelt
wird, ohne daß der
Rest des SMP-Knotens 12 auf die Transaktion reagiert.
-
Daher verwendet der Logikblock 62 der
Systemschnittstelle das Ignoriersignal 70, um effektiv
mit den Reihenfolgeneinschränkungen
bzw. -randbedingungen zu arbeiten, die durch die Ausgangswarteschlangen/Eingangswarteschlangenstruktur
der Adreßsteuerung 52 auferlegt
werden. Wenn eine Transaktion auf dem Adreßbus 58 überreicht
wird und Logikblock 62 der Systemschnittstelle erkennt, daß eine entfernte
Transaktion als Reaktion auf die Transaktion durchgeführt werden
soll, setzt bzw. bestätigt
der Logikblock 62 das Ignoriersignal 70. Das Setzen
des Ignoriersignals 70 bezogen auf eine Transaktion veranlaßt die Adreßsteuerung 52,
die Speicherung der Transaktion in den Eingangswarteschlangen 74 zu
verhindern. Daher können
andere Transaktionen, die im Anschluß an die ignorierte Transaktion
auftreten und lokal innerhalb des SMP-Knotens 12A erledigt
werden können,
außer der
Reihe bezüglich
der ignorierten Transaktion abgeschlossen werden, ohne die Reihenfolgeregeln der
Eingangswarteschlange 74 zu verletzen. Insbesondere können Transaktionen,
die von der Systemschnittstelle 24 als Reaktion auf eine
Kohärenzaktivität auf dem
Netzwerk 14 durchgeführt
werden, im Anschluß an
die ignorierte Transaktion durchgeführt und abgeschlossen werden.
Wenn eine Antwort von der entfernten Transaktion empfangen wird,
kann die ignorierte Transaktion vom Logikblock 62 der Systemschnittstelle
erneut auf dem Adreßbus 58 ausgegeben
werden. Die Transaktion wird dadurch in die Eingangswarteschlange 74 gestellt
und kann der Reihe nach mit Transaktionen, die zum Zeitpunkt der erneuten
Ausgabe auftreten, abgeschlossen werden.
-
Es ist darauf hinzuweisen, daß nach einer Ausführungsform
dann, wenn einmal eine Transaktion von einer bestimmten Adreßsteuerung 52 ignoriert
wurde, auch nachfolgende, kohärente
Transaktionen von dieser betreffenden bzw. bestimmten Adreßsteuerung 52 ignoriert
werden. Transaktionen von einem bestimmten Prozessor 16 können eine wichtige
Reihenfolgebeziehung untereinander haben, unabhängig von den Reihefolgeanforderungen, die
durch das Überreichen
auf dem Adreßbus 58 auferegt
werden. Zum Beispiel kann eine Transaktion von einer anderen Transaktion
durch einen Speichersynchronisierungsbefehl wie dem MEMBAR-Befehl, der
in der SPARC-Architektur
enthalten ist, getrennt werden. Der Prozessor 16 übermittelt
die Transaktionen in der Reihenfolge, in der die Transaktionen mit Bezug
zueinander durchgeführt
werden sollen. Die Transaktionen sind innerhalb der Ausgangswarteschlange 72 der
Reihe nach geordnet und daher sind die Transaktionen, die von einer
bestimmten Ausgangswarteschlange 72 ausgehen, der Reihe
nach durchzuführen.
Das Ignorieren nachfolgender Transaktionen von einer bestimmten
Adreßsteuerung 52 ermöglicht es,
die Regeln zur richtigen Reihenfolge für eine bestimmte Ausgangswarteschlange 72 einzuhalten.
Es wird darüber
hinaus darauf hingewiesen, daß nicht
alle Transaktionen von einem bestimmten Prozessor geordnet sein
müssen.
Es ist jedoch schwierig, auf dem Adreßbus 58 zu bestimmen, welche
Transaktionen geordnet sein müssen
und welche Transaktionen nicht geordnet zu sein brauchen. Daher
behält
in dieser Implementierung der Logikblock 62 die Reihenfolge
bei allen Transaktionen von einer bestimmten Ausgangswarteschlange 72 bei.
Es wird darauf hingewiesen, daß andere
Implementierungen von Unterknoten 50 möglich sind, die Ausnahmen von
dieser Regel zulassen.
-
Die Datensteuerung 54 leitet
Daten zu und von dem Datenbus 60, dem Speicheranteil 56 und den
Cachespeichern 18. Die Datensteuerung 54 kann
Eingangs- und Ausgangswarteschlangen ähnlich zur Adreßsteuerung 52 beinhalten.
Nach einer Ausführungsform
verwendet die Datensteuerung 54 mehrere physikalische Einheiten
in einer byteweise aufgeteilten bzw. byte-sliced Buskonfiguration.
-
Die Prozessoren 16 enthalten
wie in 2 abgebildet
Speicherverwaltungseinheiten (Memory Management Units, MMUs) 76A–76B.
Die MMUs 76 führen
sowohl auf den Datenadressen, die von dem auf den Prozessoren 16 ausgeführten Befehlscode erzeugt
werden, als auch auf den Befehlsadressen eine Übersetzung von virtuellen in
physikalische Adressen durch. Die Adressen, die als Reaktion auf die
Befehlsausführung
erzeugt werden, sind virtuelle Adressen. Mit anderen Worten sind
die virtuellen Adressen diejenigen Adressen, die vom Programmierer
des Befehlscode kreiert werden. Die virtuellen Adressen werden durch
einen Mechanismus zur Adreßübersetzung
(verkörpert
in den MMUs 76) gereicht, von dem entsprechende physikalische
Adressen kreiert werden. Die physikalische Adresse gibt die Speicherstelle
innerhalb des Speichers 22 an.
-
Die Adreßübersetzung wird aus vielen
Gründen
durchgeführt.
Zum Beispiel kann der Mechanismus zur Adreßübersetzung verwendet werden,
um einer bestimmten Berechnungsaufgabe den Zugriff auf gewisse Speicheradressen
zu gewähren
oder zu verweigern. Auf diese Weise werden Daten und Befehle innerhalb
einer Berechnungsaufgabe von den Daten und Befehlen einer anderen
Berechnungsaufgabe isoliert. Zusätzlich
können
Teile der Daten und Befehle einer Berechnungsaufgabe auf ein Plattenlaufwerk
per Paging ausgelagert werden. Wenn ein Teil per Paging ausgelagert
wird, wird die Übersetzung
ungültig
gemacht. Beim Zugriff auf den Teil durch eine Berechnungsaufgabe
tritt eine Unterbrechung bzw. ein Interrupt aufgrund der fehlgeschlagenen Übersetzung
auf. Der Interrupt erlaubt es dem Betriebssystem, die entsprechende
Information vom Plattenlaufwerk zurückzuholen. Auf diese Weise kann
mehr virtueller Speicher als tatsächlicher Speicher im Speicher 22 verfügbar sein.
Viele andere Verwendungen von virtuellem Speicher sind wohl bekannt.
-
Wiederum gemäß dem in 1 abgebildeten Computersystem 10 in
Verbindung mit der in 2 veranschaulichten
Implementierung des SMP-Knotens 12A ist die von den MMUs 76 berechnete
physikalische Adresse eine lokale physikalische Adresse (LPA), die
eine Stelle innerhalb des Speichers 22 definiert, die einem
SMP-Knoten 12, in dem der Prozessor 16 angesiedelt
ist, zu geordnet ist. Das MTAG 68 speichert einen Kohärenzzustand
für jede "Kohärenzeinheit"
im Speicher 22. Wenn eine Adreßtransaktion auf dem SMP-Bus 20 durchgeführt wird, überprüft der Logikblock 62 der
Systemschnittstelle den Kohärenzzustand,
der im MTAG 68 für
die Kohärenzeinheit,
auf die zugegriffen wird, gespeichert ist. Wenn der Kohärenzzustand
anzeigt, daß der SMP-Knoten 12 ausreichende
Zugriffsrechte auf die Kohärenzeinheit
hat, um den Zugriff durchzuführen, dann
macht bzw. geht die Adreßtransaktion
weiter. Wenn jedoch der Kohärenzzustand
anzeigt, daß die Kohärenzaktivität vor Abschluß der Transaktion durchgeführt werden
sollte, dann setzt der Logikblock 62 der Systemschnittstelle
das Ignoriersignal 70. Der Logikblock 62 führt Kohärenzoperationen
auf dem Netzwerk 14 durch, um den geeigneten Kohärenzzustand
zu erhalten. Wenn der geeignete Kohärenzzustand erlangt ist, dann
gibt der Logikblock 62 die ignorierte Transaktion erneut
auf dem SMP-Bus 20 aus. Im Anschluß daran wird die Transaktion
abgeschlossen.
-
Allgemein gesprochen zeigt der Kohärenzzustand,
der für
eine Kohärenzeinheit
an einer bestimmten Speicherstelle (z. B. einem Cache oder einem
Speicher 22) gehalten wird, die Zugriffsrechte auf die
Kohärenzeinheit
an diesem SMP-Knoten 12 an. Das Zugriffsrecht zeigt sowohl
die Gültigkeit
einer Kohärenzeinheit
als auch die gewährte
Lese-/Schreibberechtigung für
die Kopie der Kohärenzeinheit
innerhalb dieses SMP-Knotens 12 an. Nach einer Ausführungsform
sind die Kohärenzzustände, die
vom Computersystem 10 verwendet werden, "modifiziert",
"im Besitz", "gemeinsam genutzt" und "ungültig". Der Zustand "modifiziert"
zeigt an, daß der SMP-Knoten 12 die
entsprechende Kohärenzeinheit aktualisiert
hat. Daher besitzen andere SMP-Knoten 12 keine Kopie der
Kohärenzeinheit.
Zusätzlich
wird die Kohärenzeinheit
in den Heimatkonten zurückgespeichert,
wenn die geänderte
Kohärenzeinheit
vom SMP-Knoten 12 gestrichen bzw. verworfen wird. Der Zustand
"im Besitz" zeigt an, daß der
SMP-Knoten 12 für
die Kohärenzeinheit
verantwortlich ist, aber andere SMP-Knoten 12 können eine
gemeinsam genutzte Kopie haben. Wiederum wird die Kohärenzeinheit
in den Heimatkonten zurückgespeichert,
wenn die Kohärenzeinheit
vom SMP-Knoten 12 verworfen wird. Der Zustand "gemeinsam
genutzt" zeigt an, daß der SMP-Knoten 12 die
Kohärenzeinheit
lesen kann, jedoch die Kohärenzeinheit
nicht aktualisieren darf, ohne den Zustand "im Besitz" zu erhalten.
Zusätzlich können andere
SMP-Knoten 12 gleichfalls Kopien der Kohärenzeinheit
besitzen. Schließlich
zeigt der Zustand "ungültig"
an, daß der
SMP-Knoten 12 keine Kopie der Kohärenzeinheit besitzt. Nach einer
Ausführungsform
zeigt der Zustand "modifiziert" Schreibberechtigung an und jeder
Zustand außer
"ungültig" zeigt
Leseberechtigung für
die entsprechende Kohärenzeinheit
an.
-
In dem hier verwendeten Sinn ist
eine Kohärenzeinheit
eine Anzahl von zusammenhängenden Bytes
von Speicher, die zu Kohärenzzwecken
als eine Einheit behandelt werden. Wenn zum Beispiel ein Byte innerhalb
der Kohärenzeinheit
aktualisiert wird, wird die gesamte Kohärenzeinheit als aktualisiert
betrachtet. Nach einer spezifischen Ausführungsform ist die Kohärenzeinheit
ein Cacheblock bzw. eine Cache-Zeile, die 64 zusammenhängende Bytes
umfaßt.
Es versteht sich jedoch, daß eine
Kohärenzeinheit
jede beliebige Anzahl von Bytes umfassen kann.
-
Die Systemschnittstelle 24 beinhaltet
auch einen Übersetzungsmechanismus,
der von dem Übersetzungsspeicher 64 Gebrauch
macht, um Übersetzungen
von der lokalen, physikalischen Adresse in eine globale Adresse
(GA) zu speichern. Gewisse Bits innerhalb der globalen Adresse geben den
Heimatknoten für
die Adresse an, bei dem Kohärenzinformation
für diese
globale Adresse gespeichert ist. Zum Beispiel kann eine Ausführungsform des
Computersystems 10 vier SMP-Knoten 12 wie die von 1 verwenden. In einer solchen
Ausführungsform
zeigen zwei Bits der globalen Adresse den Heimatknoten an. Vorzugsweise
werden Bits vom höchstwertigen
Teil der globalen Adresse verwendet, um den Heimatknoten anzuzeigen.
Dieselben Bits werden in der lokalen physikalischen Adresse verwendet,
um NUMA-Zugriffe anzuzeigen. Wenn die Bits der LPA anzeigen, daß der lokale
Knoten nicht der Heimatknoten ist, dann ist die LPA eine globale Adresse
und die Transaktion wird im NUMA-Modus durchgeführt. Daher setzt das Betriebssystem
globale Adressen in den MMUs 76 für jede NUMA-artige Seite. Umgekehrt
setzt das Betriebssystem LPAs in den MMUs 76 für jede COMA-artige
Seite. Es wird darauf hingewiesen, daß eine LPA gleich einer GA sein
kann (sowohl für
NUMA-Zugriffe als auch für
globale Adressen, deren Heimat innerhalb des Speichers 22 in
dem Knoten ist, in dem die LPA dargestellt wird). Alternativ kann
eine LPA in eine GA übersetzt
werden, wenn die LPA Speicherstellen anzeigt, die zum Speichern
von Kopien von Daten verwendet werden, die eine Heimat in einem
anderen SMP-Knoten 12 haben.
-
Das Verzeichnis 66 eines
bestimmten Heimatknotens zeigt an, welche SMP-Knoten 12 Kopien von
Daten haben, die einer gegebenen globalen Adresse, die dem Heimatknoten
zugewiesen ist, entsprechen, so daß die Kohärenz zwischen den Kopien aufrecht
gehalten werden kann. Darüber
hinaus gibt das Verzeichnis 66 des Heimatknotens den SMP-Knoten 12 an,
der die Kohärenzeinheit
in Besitz hat. Daher wird die systemweite (oder globale) Kohärenz unter
Verwendung des MTAG 68 und des Verzeichnisses 66 aufrecht
erhalten, während
die lokale Kohärenz
zwischen den Cachespeichem 18 und den Prozessoren 16 mittels
Mitlesen aufrecht erhalten wird. Das Verzeichnis 66 speichert
die Kohärenzinformation,
die den Kohärenzeinheiten
entspricht, welche dem SMP-Knoten 12A zugewiesen
sind (d. h. für
die der SMP-Knoten 12A der Heimatknoten ist).
-
Es ist darauf hinzuweisen, daß für die Ausführungsform
von 2 das Verzeichnis 66 und
das MTAG 68 für
jede Kohärenzeinheit
(d. h. auf der Basis von Kohärenzeinheiten)
Information speichert. Umgekehrt speichert der Übersetzungsspeicher 64 Übersetzungen
von lokalen physikalischen in globale Adressen, die für Seiten
definiert sind. Eine Seite umfaßt
mehrere Kohärenzeinheiten
und hat typischerweise ein Größe von einigen
Kilobytes oder sogar Megabytes.
-
Die Software kreiert demgemäß Übersetzungen
von lokalen physikalischen Adressen in globale Adressen auf der
Basis von Seiten (dadurch wird eine lokale Speicherseite zum Speichern
einer Kopie einer entfernt gespeicherten, globalen Seite zugeordnet).
Daher werden Blöcke
des Speichers 22 gleichfalls einer bestimmten globalen
Adresse auf der Basis von Seiten zugeordnet. Wie oben dargelegt
werden jedoch Kohärenzzustände und
Kohärenzaktivitäten auf
einer Kohärenzeinheit
durchgeführt.
Daher werden die Daten, die einer Seite entsprechen, nicht notwendigerweise
in den zugeordneten Speicher übertragen,
wenn eine Seite im Speicher einer bestimmten globalen Adresse zugeordnet
wird. Stattdessen werden dann, wenn die Prozessoren 16 auf verschiedene
Kohärenzeinheiten
innerhalb der Seite zugreifen, diese Kohärenzeinheiten vom Besitzer
der Kohärenzeinheit übertragen.
Auf diese Weise werden die Daten, auf die tatsächlich vom SMP-Knoten
12A zugegriffen
wird, in den entsprechenden Speicher 22 übertragen.
Daten, auf die vom SMP-Knoten 12A nicht
zugegriffen wird, brauchen nicht übertragen zu werden, wodurch
die Gesamtnutzung von Bandbreite auf dem Netzwerk 14 im
Vergleich zu Ausführungsformen,
welche die Seite von Daten beim Reservieren der Seite im Speicher 22 übertragen,
reduziert wird.
-
Es ist darauf hinzuweisen, daß nach einer Ausführungsform
der Übersetzungsspeicher 64,
das Verzeichnis 66 und/oder das MTAG 68 Cachespeicher
sein können,
die nur einen Teil der zugeordneten Übersetzungs-, Verzeichnis-
bzw. MTAG-Information speichern. Die Gesamtheit der Übersetzungs-,
Verzeichnis- und MTAG-Information ist in Tabellen innerhalb des
Speichers 22 oder einem dafür bestimmten Speicher (nicht
abgebildet) gespeichert. Wenn für
einen Zugriff benötigte
Information nicht im entsprechenden Cache gefunden wird, wird von
der Systemschnittstelle 24 auf die Tabellen zugegriffen.
-
Gemäß 2A ist ein exemplarischer Verzeichniseintrag 71 dargestellt.
Der Verzeichniseintrag 71 kann von einer Ausführungsform
des in 2 abgebildeten
Verzeichnisses 66 verwendet werden. Andere Ausführungsformen
des Verzeichnisses 66 können
davon verschiedene Verzeichniseinträge verwenden. Der Verzeichniseintrag 71 beinhaltet
ein Gültigbit
bzw. Valid-Bit 73, ein Zurückschreibbit bzw. Write-Back-Bit 75,
ein Besitzerfeld bzw. Owner-Field 77 und ein Gemeinsame-Nutzer-Feld
bzw. Sharers-Field 79. Der Verzeichniseintrag 71 befindet
sich innerhalb der Tabelle von Verzeichniseinträgen und wird innerhalb der
Tabelle mittels der globalen Adresse, welche die entsprechende Kohärenzeinheit
angibt, lokalisiert. Genauer wird der einer Kohärenzeinheit zugeordnete Verzeichniseintrag 71 innerhalb
der Tabelle von Verzeichniseinträgen
mit einem Offset gespeichert, der aus der globalen Adresse, welche die
Kohärenzeinheit
angibt, gebildet wird.
-
Das Gültigbit 73 zeigt,
wenn es gesetzt ist, an daß der
Verzeichniseintrag 71 gültig
ist (d. h. daß der
Verzeichniseintrag 71 Kohärenzinformation für eine entsprechende
Kohärenzeinheit
speichert). Wenn es gelöscht
ist, zeigt das Gültigbit 73 an,
daß der
Verzeichniseintrag 71 ungültig ist.
-
Das Besitzerfeld 77 bezeichnet
einen von den SMP-Knoten 12 als den Besitzer der Kohärenzeinheit.
Der besitzende SMP-Knoten 12A–12D hält die Kohärenzeinheit
entweder im Zustand "modifiziert" oder im Zustand "in Besitz". Typischerweise
erhält
der besitzende SMP-Knoten 2A-12D die Kohärenzeinheit im Zustand "modifiziert"
(siehe 13 unten). Anschließend kann
der besitzende SMP-Knoten 12A–12D dann in den Zustand
"in Besitz" übergehen,
indem er eine Kopie der Kohärenzeinheit
einem anderen SMP-Knoten 12A–12D zur Verfügung stellt.
Der andere SMP-Knoten 12A–12D erhält die Kohärenzeinheit
im Zustand "gemeinsam genutzt". Nach einer Ausführungsform umfaßt das Besitzerfeld 77 zwei
Bits, die kodiert werden, um einen von vier SMP-Knoten 12A–12D als
den Besitzer der Kohärenzeinheit
zu bezeichnen.
-
Das Gemeinsame-Nutzer-Feld 79 enthält je ein
Bit, das je einem SMP-Knoten 12A–12D zugewiesen ist.
Wenn ein SMP-Knoten 12A–12D eine gemeinsam
genutzte Kopie der Kohärenzeinheit
hält, ist
das entsprechende Bit innerhalb des Gemeinsame-Nutzer-Feldes 79 gesetzt.
Wenn umgekehrt der SMP-Knoten 12A–12D keine gemeinsam
genutzte Kopie der Kohärenzeinheit
hält, ist
das entsprechende Bit innerhalb des Gemeinsame-Nutzer-Feldes 79 gelöscht. Auf
diese Weise zeigt das Gemeinsame-Nutzer-Feld 79 alle gemeinsam
genutzten Kopien der Kohärenzeinheit
an, die es innerhalb des Computersystems 10 aus 1 gibt.
-
Das Zurückschreibbit 75 gibt,
wenn es gesetzt ist, an, daß der
SMP-Knoten 12A–12D,
der als Besitzer der Kohärenzeinheit
mittels des Besitzerfeldes 77 bezeichnet ist, die aktualisierte
Kopie der Kohärenzeinheit
in den Heimat-SMP-Knoten 12 zurückgeschrieben hat. Wenn es
gelöscht
ist, zeigt Bit 75 an, daß der besitzende SMP-Knoten 12A–12D die aktualisierte
Kopie der Kohärenzeinheit
nicht in den Heimat-SMP-Knoten 12A–12D zurückgeschrieben hat.
-
Gemäß 3 ist ein Blockdiagramm einer Ausführungsform
der Systemschnittstelle 24 dargestellt. Wie in 3 dargestellt, enthält die Systemschnittstelle 24 das
Verzeichnis 66, den Übersetzungsspeicher 64 und
das MTAG 68. Der Übersetzungsspeicher 64 ist
als eine Übersetzungseinheit 80 von
globalen Adressen in lokale, physikalische Adressen (GA2LPA) und
eine Übersetzungseinheit 82 von
lokalen, physikalischen Adressen in globale Adressen (LPA2GA).
-
Die Systemschnittstelle 24 beinhaltet
auch Eingabe- und Ausgabewarteschlangen zum Speichern von Transaktionen,
die über
den SMP-Bus 20 oder über
das Netzwerk 14 durchgeführt werden sollen. Speziell
bei der abgebildeten Ausführungsform enthält die Systemschnittstelle 24 die
Eingabe-Header-Warteschlange 84 und die Ausgabe-Header-Warteschlange 86 zum
Puffern von Headerpaketen zum oder vom Netzwerk 14. Headerpakete
bestimmen eine auszuführende
Operation und geben die Anzahl und das Format eines beliebigen Datenpakets
an, das folgen kann. Die Ausgabe-Header-Warteschlange 86 puffert
Headerpakete, die über
das Netzwerk 14 zu übertragen
sind, und die Eingabe-Header-Warteschlange 84 puffert Headerpakete,
die vom Netzwerk 14 empfangen wurden, bis die Systemschnittstelle 24 die
empfangenen Headerpakete verarbeitet. Ähnlich werden Datenpakete in der
Eingabe-Daten-Warteschlange 88 und der Ausgabe-Daten-Warteschlange 90 gepuffert,
bis die Daten über
den SMP-Bus 60 bzw. das Netzwerk 14 übertragen
werden können.
-
Die SMP-Ausgangswarteschlange 92,
die SMP-Eingangswarteschlange 94 und die SMP-I/O-Eingangswarteschlange
(PIQ) 96 werden benutzt, um Adreßtransaktionen zum und vom Adreßbus 58 zu
puffern. Die SMP-Ausgangswarteschlange 92 puffert Transaktionen,
die von der Systemschnittstelle 24 auf dem Adreßbus 58 überreicht werden.
Erneut ausgegebene Transaktionen, die als Reaktion auf den Abschluß einer
Kohärenzaktivität mit Bezug
auf eine ignorierte Transaktion in eine Warteschlange gestellt werden,
werden in der SMP-Ausgangswarteschlange 92 gepuffert. Darüber hinaus
werden Transaktionen, die als Reaktion auf eine vom Netzwerk 14 empfangene
Kohärenzaktivität erzeugt
werden, in der SMP-Ausgangswarteschlange 92 gepuffert.
Die SMP-Eingangswarteschlange 94 speichert
kohärenzbezogene
Transaktionen, die von der Systemschnittstelle 24 zu bedienen sind.
Umgekehrt speichert die SMP- PIQ 96 I/O-Transaktionen,
die an eine I/O-Schnittstelle, die sich in einem anderen SMP-Knoten 12 befindet,
zu übermitteln
sind. I/O-Transaktionen
werden generell als nicht-kohärent
betrachtet und erzeugen daher keine Kohärenzaktivitäten.
-
Die SMP-Eingangswarteschlange 94 und
die SMP-PIQ 96 empfangen Transaktionen, die in eine Warteschlange
einzufügen
sind, von einem Transaktionsfilter 98. Der Transaktionsfilter 98 ist an
das MTAG 68 und den SMP-Adreßbus 58 angeschlossen.
Wenn der Transaktionsfilter 98 eine I/O-Transaktion auf
dem Adreßbus 58 entdeckt,
die eine I/O-Schnittstelle auf einem anderen SMP-Knoten 12 bezeichnet, stellt
der Transaktionsfilter 98 die Transaktion in die SMP- PIQ 96.
Wenn eine Kohärenztransaktion
zu einer LPA-Adresse vom Transaktionsfilter 98 entdeckt
wird, dann wird der entsprechende Kohärenzzustand von dem MTAG 68 überprüft. Entsprechend
dem Kohärenzzustand
kann der Transaktionsfilter 98 das Ignoriersignal 70 setzen
und kann eine Kohärenztransaktion
in die SMP-Eingangswarteschlange 94 einstellen. Es wird
das Ignoriersignal 70 gesetzt und eine Kohärenztransaktion
in die Warteschlange eingestellt, wenn das MTAG 68 anzeigt, daß der SMP-Knoten 12A ungenügende Zugriffsrechte
auf die Kohärenzeinheit
zum Durchführen
der Kohärenztransaktion
hält. Umgekehrt
wird das Ignoriersignal 70 zurückgesetzt und keine Kohärenztransaktion
erzeugt, wenn das MTAG 68 anzeigt, daß ein ausreichendes Zugriffsrecht
vom SMP-Knoten 12A gehalten wird.
-
Transaktionen von der SMP-Eingangswarteschlange 94 und
der SMP-PIQ 96 werden von einem Anforderungsagenten 100 innerhalb
der Systemschnittstelle 24 verarbeitet. Vor der Aktion
des Anforderungsagenten 100 übersetzt die LPA2GA-Übersetzungseinheit 82 die
Adresse der Transaktion (wenn sie eine LPA-Adresse ist) von einer
lokalen, physikalischen Adresse, die auf dem SMP-Adreßbus 58 präsentiert
wird, in die entsprechende globale Adresse. Der Anforderungsagent 100 erzeugt
dann ein Headerpaket, das eine bestimmte Kohärenzanforderung bezeichnet,
die zum Heimatknoten zu übertragen
ist, der durch die globale Adresse bestimmt wird. Die Kohärenzanforderung
wird in die Ausgabe-Header-Warteschlange 86 eingestellt.
Anschließend
wird eine Kohärenzantwort
in die Eingabe-Header-Warteschlange 84 empfangen. Der Anforderungsagent 100 verarbeitet
die Kohärenzantworten
aus der Eingabe-Header-Warteschlange 84, wobei er möglicherweise
erneut ausgegebene Transaktionen für die SMP-Ausgangswarteschlange 92 erzeugt
(wie unten beschrieben).
-
Ebenso sind in der Systemschnittstelle 24 ein
Heimatagent 102 und ein abhängiger Agent 104 enthalten.
Der Heimatagent 102 verarbeitet Kohärenzanforderungen, die aus
der Eingabe-Header-Warteschlange 84 empfangen
werden. Aus der Kohärenzinformation,
die im Verzeichnis 66 mit Bezug auf eine bestimmte globale
Adresse gespeichert ist, bestimmt der Heimatagent 102,
ob eine Kohärenzaufforderung bzw.
-anfrage an einen oder mehrere abhängige Agenten in anderen SMP-Knoten 12 zu übertragen ist.
Nach einer Ausführungsform
blockiert bzw. sperrt der Heimatagent 102 die Kohärenzinformation,
die der betroffenen Kohärenzeinheit
entspricht. Mit anderen Worten werden nachfolgende Anforderungen, welche
die Kohärenzeinheit
einbeziehen, nicht durchgeführt,
bis die Kohärenzaktivität, die der
Kohärenzanforderung
entspricht, abgeschlossen ist. Gemäß einer Ausführungsform
empfängt
der Heimatagent 102 einen Kohärenzabschluß vom Anforderungsagenten,
der die Kohärenzanforderung
eingeleitet hat (über
die Eingabe-Header-Warteschlange 84).
Der Kohärenzabschluß zeigt
an, daß die
Kohärenzaktivität abgeschlossen
ist. Beim Empfang des Kohärenzabschlusses
entfernt der Heimatagent 102 die Blockierung bzw. Sperre
auf der Kohärenzinformation,
die der betroffenen Kohärenzeinheit
entspricht. Es wird darauf hingewiesen, daß der Heimatagent 102 die
Kohärenzinformation
entsprechend der durchgeführten
Kohä renzaktivität sofort
aktualisieren kann, wenn die Kohärenzanforderung
empfangen wurde, da die Kohärenzinformation
bis zum Abschluß der
Kohärenzaktivität gesperrt
ist.
-
Der abhängige Agent 104 empfängt Kohärenzaufforderungen
bzw. -anfragen von Heimatagenten anderer SMP-Knoten 12 über die
Eingabe-Header-Warteschlange 84. Als Reaktion auf eine
bestimmte Kohärenzaufforderung
kann der abhängige Agent 104 eine
Kohärenztransaktion
in die SMP-Ausgangswarteschlange 92 stellen. Nach einer Ausführungsform
kann die Kohärenztransaktion
veranlassen, daß die
Cachespeicher 18 und die internen Cachespeicher der Prozessoren 16 die
betroffene Kohärenzeinheit
ungültig
machen. Wenn eine Kohärenzeinheit
in den Cachespeichern modifiziert wird, werden die geänderten
Daten an die Systemschnittstelle 24 übertragen. Alternativ kann
die Kohärenztransaktion
veranlassen, daß die
Cachespeicher 18 und die internen Cachespeicher der Prozessoren 16 den
Kohärenzzustand
der Kohärenzeinheit
auf "gemeinsam genutzt" ändern.
Sobald der abhängige Agent 104 die
Aktivität
als Reaktion auf eine Kohärenzanfrage
abgeschlossen hat, sendet der abhängige Agent 104 eine
Kohärenzantwort
an den Anforderungsagenten, der die Kohärenzanforderung, die der Kohärenzanfrage
entspricht, eingeleitet hat. Die Kohärenzantwort wird in die Ausgabe-Header-Warteschlange 86 gestellt.
Bevor Aktivitäten
als Reaktion auf eine Kohärenzanfrage
durchgeführt
werden, wird die globale Adresse, die mit der Kohärenzanfrage empfangen
wurde, mittels der GA2LPA Übersetzungseinheit 80 in
eine lokale, physikalische Adresse übersetzt.
-
Gemäß einer Ausführungsform
beinhaltet das Kohärenzprotokoll,
das von dem Anforderungsagenten 100, dem Heimatagenten 102 und
dem abhängigen
Agenten 104 durchgeführt
wird, eine Strategie zum Ungültigmachen
von Schreibvorgängen bzw.
eine Write Invalidate Policy. Mit anderen Worten werden in dem Fall,
daß ein
Prozessor 16 innerhalb eines SMP-Knotens 12 eine
Kohärenzeinheit
aktualisiert, alle Kopien der Kohärenzeinheit, die innerhalb von
anderen SMP-Knoten 12 gespeichert
sind, ungültig
gemacht. Es können
jedoch in anderen Ausführungsformen
andere Schreibstrategien verwendet werden. Zum Beispiel kann eine
Strategie zum Aktualisieren beim Schreiben bzw. Write Update Policy angewandt
werden. Gemäß einer
Strategie zum Aktualisieren beim Schreiben werden dann, wenn eine Kohärenzeinheit
aktualisiert wird, die aktualisierten Daten an jede der Kopien der
Kohärenzeinheit,
die in jedem von den SMP-Knoten 12 gespeichert werden, übertragen.
-
Gemäß 4 ist ein Diagramm dargestellt, das typische
Kohärenzaktivitäten zeigt,
die zwischen dem Anforderungsagenten 100 eines ersten SMP-Knotens 12A–12D (dem
"anfordernden Knoten"), einem Heimatagenten 102 eines zweiten SMP-Knotens 12A–12D (dem
"Heimatknoten") und dem abhängigen
Agenten 104 eines dritten SMP-Knotens 12A–12D (dem
"abhängigen
Knoten") als Reaktion auf eine bestimmte Transaktion auf dem SMP-Bus 20 innerhalb
des SMP-Knotens 12, der dem Anforderungsagenten 100 entspricht,
durchgeführt
werden. Spezifische Kohärenzaktivitäten, die entsprechend
einer Ausführungsform
des in 1 abgebildeten
Computersystems 10 verwendet werden, sind unten unter Bezug
auf die 9-13 weiter beschrieben. Die
Bezugszahlen 100, 102 und 104 werden
verwendet, um Anforderungsagenten, Heimatagenten und abhängige Agenten
für den
Rest dieser Beschreibung zu bezeichnen. Es versteht sich, daß dann,
wenn ein Agent mit einem anderen Agenten kommuniziert, sich die
beiden Agenten häufig
in verschiedenen SMP-Knoten 12A–12D befinden.
-
Beim Empfang einer Transaktion vom SMP-Bus 20 bildet
der Anforderungsagent 100 eine für die Transaktion geeignete
Kohärenzanforderung und überträgt die Kohärenzanforderung
an den Heimatagent, der der Adresse der Transaktion entspricht (Bezugszahl 110).
Die Kohärenzanforderung
gibt sowohl das vom Anforderungsagenten 100 angeforderte
Zugriffsrecht als auch die globale Adresse der betroffenen Kohärenzeinheit
an. Das angeforderte Zugriffsrecht ist ausreichend, um das Auftreten
der Transaktion zu erlauben, die in demjenigen SMP-Knoten 12 versucht
wird, der dem Anforderungsagenten 100 entspricht.
-
Beim Empfang der Kohärenzanforderung greift
der Heimatagent 102 auf das zugehörige Verzeichnis 66 zu
und stellt fest, welche SMP-Knoten 12 Kopien der betroffenen
Kohärenzeinheit
speichern. Darüber
hinaus stellt der Heimatagent 102 den Besitzer der Kohärenzeinheit
fest. Der Heimatagent 102 kann eine Kohärenzanfrage sowohl an die abhängigen Agenten 104 jedes
der Knoten, welche Kopien der betroffenen Kohärenzeinheit speichern, als
auch an den abhängigen
Agenten 104 des Knotens, der den Kohärenzzustand "in Besitz" für die betroffene Kohärenzeinheit
hält, stellen
(Bezugszahl 112) Die Kohärenzanfragen zeigen den neuen
Kohärenzzustand
für die
betroffene Kohärenzeinheit
in den empfangenden SMP-Knoten 12 an. Während die Kohärenzanforderung
aussteht, blockiert der Heimatagent 102 die Kohärenzinformation,
die der betroffenen Kohärenzeinheit
entspricht, so daß nachfolgende
Kohärenzanforderungen,
welche die betroffene Kohärenzeinheit
einbeziehen, vom Heimatagenten 102 nicht eingeleitet werden.
Der Heimatagent 102 aktualisiert darüber hinaus die Kohärenzinformation,
um den Abschluß der
Kohärenzanforderung
widerzuspiegeln.
-
Der Heimatagent 102 kann
darüber
hinaus eine Kohärenzantwort
an den Anforderungsagenten 100 übermitteln (Bezugszahl 114).
Die Kohärenzantwort
kann die Anzahl der Kohärenzantworten,
die von den abhängigen
Agenten 104 anstehen bzw. kommen werden, anzeigen. Alternativ
können
gewisse Transaktionen ohne Interaktion mit den abhängigen Agenten 104 abgeschlossen
werden. Zum Beispiel kann eine I/O-Transaktion, die an eine I/O-Schnittstelle
26 in dem SMP-Knoten 12 gerichtet
ist, der den Heimatagenten 102 enthält, vom Heimatagenten 102 abgeschlossen
werden. Der Heimatagent 102 kann eine Transaktion für den zugeordneten
SMP-Bus 20 in eine Warteschlange einreihen (Bezugszahl 116) und
dann eine Antwort übermitteln,
die anzeigt, daß die
Transaktion abgeschlossen ist.
-
Ein abhängiger Agent 104 kann
als Reaktion auf eine Kohärenzanfrage
vom Heimatagenten 102 eine Transaktion zum Anbieten bzw.
zur Übergabe auf
dem zugeordneten SMP-Bus 20 in eine Warteschlange einreihen
(Bezugszahl 118). Darüber
hinaus übermitteln
die abhängigen
Agenten 104 eine Kohärenzantwort
an den Anforderungsagenten 100 (Bezugszahl 120).
Die Kohärenzantwort
zeigt an, daß die
Kohärenzanfrage,
die als Reaktion auf eine bestimmte Kohärenzanfordenang empfangen wurde, von
diesem abhängigen
Agenten abgeschlossen wurde. Die Kohärenzantwort wird von den abhängigen Agenten 104 übermittelt,
wenn die Kohärenzanfrage
abgeschlossen wurde, oder zu einem solchen Zeitpunkt vor Abschluß der Kohärenzanfrage,
zu dem bezüglich
der Ko härenzanfrage
sichergestellt ist, daß sie
auf dem entsprechenden SMP-Knoten 12 fertiggestellt wird
und zu dem keine Zustandsänderungen
an der betroffenen Kohärenzeinheit
vor Abschluß der
Kohärenzanfrage
mehr durchgeführt
werden.
-
Wenn ein Anforderungsagent 100 eine
Kohärenzantwort
von jedem der betroffenen abhängigen
Agenten 104 empfangen hat, übermittelt der Anforderungsagent 100 einen
Kohärenzabschluß an den
Heimatagenten 102 (Bezugszahl 122). Beim Empfang
des Kohärenzabschlusses
entfernt der Heimatagent 102 die Sperre von der entsprechenden Kohärenzinformation.
Der Anforderungsagent 100 kann eine Neuausgabe- bzw. erneut
ausgegebene Transaktion zur Durchführung auf dem SMP-Bus 20 in
eine Warteschlange einreihen, um die Transaktion innerhalb des SMP-Knotens 12 abzuschließen (Bezugszahl 124).
-
Es ist darauf hinzuweisen, daß jeder
Kohärenzanforderung
vom Anforderungsagenten 100, der die Kohärenzanforderung
ausgibt, ein eindeutiges Tag zugewiesen wird. Anschließende Kohärenzanfragen,
Kohärenzantworten
und Kohärenzabschlüsse enthalten
das Tag. Auf diese Weise kann eine Kohärenzaktivität bezüglich einer bestimmten Kohärenzanforderung
von jedem der beteiligten Agenten identifiziert werden. Es wird
weiterhin darauf hingewiesen, daß nicht- kohärente
Operationen als Reaktion auf nicht-kohärente Transaktionen (z. B. I/O-Transaktionen)
durchgeführt
werden können. Nicht-kohärente Operationen
können
nur den anfordernden Knoten und den Heimatknoten einbeziehen. Darüber hinaus
kann ein anderes bzw. unterschiedliches, eindeutiges Tag jeder Kohärenzanforderung durch
den Heimatagenten 102 zugewiesen werden. Das andere Tag
bezeichnet den Heimatagenten 102 und wird für den Kohärenzabschluß an Stelle
des Anforderertags verwendet.
-
Gemäß 5 ist ein Diagramm dargestellt, das Kohärenzaktivitäten als
Reaktion auf eine Lesen-um-zu-Besitzen- bzw. Read-To-Own-Transaktion
auf dem SMP-Bus 20 für
eine beispielhafte Ausführungsform
des Computersystems 10 zeigt. Eine Read-To-Own-Transaktion
wird durchgeführt,
wenn ein Cachefehlschlag für
ein bestimmtes Datenelement, das von einem Prozessor 16 angefordert
wird, entdeckt wird, und der Prozessor 16 Schreibberechtigung
für die
Kohärenzeinheit
anfordert. Ein Fehlschlag beim Speichern in den Cache kann zum Beispiel
eine Read-To-Own-Transaktion
erzeugen.
-
Ein Anforderungsagent 100,
ein Heimatagent 102 und einige abhängige Agenten 104 sind
in 5 abgebildet. Der
Knoten, der die Read-To-Own-Transaktion vom SMP-Bus 20 empfängt, speichert
die betroffene Kohärenzeinheit
im Zustand "ungültig"
(z. B. ist die Kohärenzeinheit
nicht in dem Knoten gespeichert). Der Index "i" im Anforderungsknoten 100 zeigt
den Zustand "ungültig"
bzw. "invalid" an. Der Heimatknoten speichert die Kohärenzeinheit
im Zustand "gemeinsam genutzt", und die Knoten, die den verschiedenen
abhängigen
Agenten 104 entsprechen, speichern die Kohärenzeinheit gleichfalls
im Zustand "gemeinsam genutzt". Der Index "s" im Heimatagenten 102 und
den abhängigen Agenten 104 ist
ein Hinweis auf den Zustand "gemeinsam genutzt" bzw. "shared" in
diesen Knoten. Die Read-To-Own-Transaktion veranlaßt die Übertragung
der angeforderten Kohärenzeinheit
an den anfordernden Knoten. Der anfordernde Knoten empfängt die
Kohärenzeinheit
im Zustand "modifiziert".
-
Beim Empfang der Read-To-Own-Transaktion
vom SMP-Bus 20 überträgt der Anforderungsagent 100 eine
Read-To-Own-Kohärenzanforderung an
den Heimatknoten der Kohärenzeinheit
(Bezugszahl 130). Der Heimatagent 102 in dem empfangenden
Heimatknoten erkennt den Zustand "gemeinsam genutzt" für einen
oder mehrere andere Knoten. Da die abhängigen Agenten alle im Zustand
"gemeinsam genutzt" und nicht im Zustand "im Besitz" sind, kann
der Heimatknoten die angeforderten Daten direkt zur Verfügung stellen.
Der Heimatagent 102 übermittelt
eine Daten-Kohärenzantwort
an den Anforderungsagenten 100, welche die der angeforderten
Kohärenzeinheit
entsprechenden Daten enthält (Bezugszahl 132).
Darüber
hinaus gibt die Daten-Kohärenzantwort
die Anzahl von Bestätigungen
an, die von abhängigen
Agenten anderer Knoten zu empfangen sind, bevor der Anforderungsagent 100 die
Daten in Besitz nimmt. Der Heimatagent 102 aktualisiert das
Verzeichnis 66, um anzuzeigen, daß der anfordernde SMP-Knoten 12A–12D der
Besitzer der Kohärenzeinheit
ist und daß jeder
der anderen SMP-Knoten 12A–12D ungültig ist.
Wenn die Kohärenzinformation
bezüglich
der Kohärenzeinheit
beim Empfang eines Kohärenzabschlusses
vom Anforderungsagenten 100 entsperrt wird, stimmt das
Verzeichnis 66 mit dem Zustand der Kohärenzeinheit in jedem SMP-Knoten 12 überein.
-
Der Heimatagent 102 übermittelt
Kohärenzanfragen
zum Ungültigmachen
an jeden der abhängigen
Agenten 104, die gemeinsam genutzte Kopien der betroffenen
Kohärenzeinheit
halten (Bezugszahlen 134A, 134B und 134C).
Die Kohärenzanfrage zum
Ungültigmachen
veranlaßt
den empfangenden abhängigen
Agenten dazu, die entsprechende Kohärenzeinheit innerhalb des Knotens
ungültig
zu machen und eine Kohärenzantwort
zur Bestätigung
an den anfordernden Knoten zu senden, die den Abschluß des Ungültigmachens
anzeigt. Jeder abhängige
Agent 104 bringt das Ungültigmachen der Kohärenzeinheit
zum Abschluß und übermittelt
anschließend
eine Kohärenzantwort
zur Bestätigung
(Bezugszahlen 136A, 136B und 136C). Nach
einer Ausführungsform
beinhaltet jede der Bestätigungsantworten
eine Zahl der Gesamtanzahl von Antworten, die vom Anforderungsagenten 100 mit
Bezug auf die Kohärenzeinheit
zu empfangen sind.
-
Im Anschluß an das Empfangen aller Kohärenzantworten
zur Bestätigung
von den abhängigen Agenten 104 und
der Daten-Kohärenzantwort
vom Heimatagenten 102 überträgt der Anforderungsagent 100 einen
Kohärenzabschluß an den
Heimatagenten 102 (Bezugszahl 138). Der Anforderungsagent 100 erklärt die Kohärenzeinheit
innerhalb seines lokalen Speichers für gültig und der Heimatagent 102 gibt
die Sperre auf der entsprechenden Kohärenzinformation frei. Es ist
darauf hinzuweisen, daß die
Daten-Kohärenzantwort 132 und
die Kohärenzantworten
zur Bestätigung 136 in
jeder beliebigen Reihenfolge empfangen werden können, unter anderem abhängig von der
Anzahl von ausstehenden Transaktionen innerhalb jedes Knotens.
-
Gemäß 6 ist ein Flußdiagramm 140 dargestellt,
das einen beispielhaften Zustandsautomaten bzw. endlichen Automaten
zur Verwendung durch den Anforderungsagenten 100 zeigt.
Der Anforderungsagent 100 kann mehrere unabhängige Kopien des
durch das Flußdiagramm 140 dargestellten
endlichen Automaten enthalten, so daß mehrere Anforderungen gleichzeitig
bzw. nebenläufig
verarbeitet werden können.
-
Beim Empfang einer Transaktion von
der SMP-Eingangswarteschlange 94 nimmt der Anforderungsagent 100 einen
Zustand "Anforderung bereit" bzw. "Request Ready" 142 ein.
Im Zustand "Request Ready" 142 übermittelt der Anforderungsagent 100 eine
Kohärenzanforderung
an den Heimatagenten 102, der sich in dem Heimatknoten
befindet, der durch die globale Adresse der betroffenen Kohärenzeinheit
angegeben ist. Bei der Übermittlung
der Kohärenzanforderung,
geht der Anforderungsagent 100 in einen Zustand "Anforderung
aktiv" bzw. "Request Active" 144 über. Während des Zustands "Request Active" 144 empfängt der
Anforderungsagent 100 Kohärenzantworten von den abhängigen Agenten 104 (und
optional vom Heimatagenten 102). Wenn alle Kohärenzantworten
empfangen wurden, geht der Anforderungsagent 100 in einen
neuen Zustand über,
der von der Art der Transaktion abhängt, welche die Kohärenzaktivität eingeleitet
hat. Darüber
hinaus kann der Zustand "Request Active" 142 (Anforderung
aktiv) einen Timer verwenden, um zu erkennen, daß die Kohärenzantworten nicht innerhalb
einer vordefinierten Zeitüberwachungsdauer
empfangen wurden. Wenn der Timer vor Empfang der Anzahl von Antworten,
die vom Heimatagenten 102 angegeben wurde, ausläuft, geht
der Anforderungsagent 100 zu einem Fehlerzustand (nicht
abgebildet) über.
Darüber
hinaus können
gewisse Ausführungsformen
eine Antwort verwenden, die anzeigt, daß eine Leseübertragung fehlgeschlagen ist.
Wenn eine solche Antwort empfangen wird, geht der Anforderungsagent 100 zum
Zustand "Anforderung bereit" bzw. "Request Ready" 142 über, um
den Lesevorgang erneut zu versuchen.
-
Wenn die Antworten ohne Fehler oder
Zeitüberschreitung
empfangen werden, dann ist der Zustand, in den vom Anforderungsagent 100 bei
Lesetransaktionen übergegangen
wird, der Zustand "Lesen abgeschlossen" bzw. "Read Complete" 146.
Es wird darauf hingewiesen, daß bei
Lesetrartsaktionen eine der empfangenen Antworten die Daten, die
der angeforderten Kohärenzeinheit
entsprechen, enthalten kann. Der Anforderungsagent 100 gibt
die Lesetransaktion auf dem SMP-Bus 20 erneut
aus und übermittelt
darüber
hinaus den Kohärenzabschluß an den
Heimatagenten 102. Anschließend geht der Anforderungsagent 100 in
einen Zustand "Leerlauf" bzw. "Idle" 148 über. Eine
neue Transaktion kann dann vom Anforderungsagenten 100 unter
Verwendung des in 6 dargestellten
endlichen Automaten bedient werden.
-
Umgekehrt werden die Zustände "Schreiben aktiv"
bzw. "Write Active" 150 und "Ignorierten Schreibvorgang
neu ausgeben" bzw. "Ignored Write Reissue" 152 bei Schreibtransaktionen
verwendet. Das Ignoriersignal 70 wird bei gewissen Schreibtransaktionen
im Computersystem 10 nicht gesetzt, sogar wenn eine Kohärenzaktivität auf dem
Netzwerk 14 eingeleitet wird. Zum Beispiel werden I/O-Schreibtransaktionen
nicht ignoriert. Die Schreibdaten werden an die Systemschnittstelle 24 übertragen
und dort gespeichert. Der Zustand "Write Active" 150 wird für nicht-ignorierte
Schreibtransaktionen verwendet, um die Übertragung der Daten an die
Systemschnittstelle 24 zu ermöglichen, wenn die Kohärenzantworten
vor der Datenphase der Schreibtransaktion auf dem SMP-Bus 20 empfangen
werden. Sobald die entsprechenden Daten empfangen wurden, geht der Anforderungsagent 100 in
den Zustand "Schreiben abgeschlossen" bzw. "Write complete" 154 über. Während des
Zustands "Write complete" 154 wird die Kohärenzabschlußantwort
an den Heimatagenten 102 übermittelt. Anschließend geht
der Anforderungsagent 100 in den Zustand "Idle" 148 über.
-
Ignorierte Schreibtransaktionen werden
mittels eines Übergangs
in den Zustand "Ignoriertes Schreiben neu ausgeben" bzw. "Ignored
Write Reissue" 152 behandelt. Während des Zustands "Ignored Write
Reissue" 152 gibt der Anforderungsagent 100 die
ignorierte Schreibtransaktion erneut auf dem SMP-Bus 20 aus.
Auf diese Weise können
die Schreibdaten vom Ursprungsprozessor 16 übertragen
und die entsprechende Schreibtransaktion vom Prozessor 16 freigegeben
werden. Abhängig
davon, ob die Schreibdaten mit dem Kohärenzabschluß übertragen werden sollen oder
nicht, geht der Anforderungsagent 100 entweder in den Zustand
"Ignoriertes Schreiben aktiv" bzw. "Ignored Write Active" 156 oder
in den Zustand "Ignoriertes Schreiben abgeschlossen" bzw. "Ignored
Write Complete" 158 über.
Der Zustand "Ignored Write Active" 156 wird ähnlich wie
der Zustand "Write Active" 150 verwendet, um die Datenübertragung
vom SMP-Bus 20 abzuwarten. Während des Zustands "Ignored
Write Complete" 158 wird der Kohärenzabschluß an den Heimatagenten 102 übertragen.
Im Anschluß daran geht
der Anforderungsagent 100 in den Zustand "Idle" 148 über. Vom
Zustand "Idle" 148 geht der Anforderungsagent 100 beim
Empfang einer Transaktion von der SMP-Eingangswarteschlange 94 in
den Zustand "Request Ready" 142 über.
-
Gemäß 7 ist ein Flußdiagramm 160 dargestellt,
das einen beispielhaften endlichen Automaten für den Heimatagenten 102 zeigt.
Der Heimatagent 102 kann mehrere unabhängige Kopien des durch das
Flußdiagramm 160 dargestellten
endlichen Automaten enthalten, um zu ermöglichen, daß mehrere ausstehende Anforderungen
an den Heimatagenten 102 verarbeitet werden können. Gemäß einer
Ausführungsform
betreffen die mehreren ausstehenden Anforderungen jedoch nicht dieselbe
Kohärenzeinheit.
-
Der Heimatagent 102 empfängt Kohärenzanforderungen
in einem Zustand "Anforderung empfangen" bzw. "Receive Request" 162.
Die Anforderung kann entweder als eine kohärente Anforderung oder als
eine andere Transaktionsanforderung klassifiziert werden. Andere
Transaktionsanforderungen können
gemäß einer
Ausführungsform
I/O-Lese- und I/O-Schreibanforderungen, Unterbrechungs- bzw. Interruptanforderungen
und Verwaltungsanforderungen umfassen. Die nicht-kohärenten
Anforderungen werden durch Übertragen
einer Transaktion über
den SMP-Bus 20 während
eines Zustands 164 behandelt. Ein Kohärenzabschluß wird im Anschluß daran übertragen.
Auf das Empfangen des Kohärenzabschlusses
hin führen
I/O-Schreib- und angenommene bzw. akzeptierte Unterbrechungstransaktionen im
Heimatknoten zur Übertragung
einer Datentransaktion über
den SMP-Bus 20 (d. h. Zustand "nur Daten" bzw. "Data Only" 165).
Wenn die Daten übertragen
wurden, geht der Heimatagent 102 in den Zustand "Idle" 166 über. Alternativ
verursachen I/O-Lese-, Verwaltungs- und zurückgewiesene Unterbrechungstransaktionen
auf den Empfang des Kohärenzabschlusses
hin einen Übergang
in den Zustand "Idle" 166.
-
Umgekehrt geht der Heimatagent 102 beim Empfang
einer Kohärenzanforderung
in einen Prüfzustand 168 über. Der
Prüfzustand 168 wird
verwendet, um zu erkennen, ob eine Kohärenzaktivität für die von der Kohärenzanforderung
betroffene Kohärenzeinheit
im Gange ist. Wenn die Kohärenzaktivität im Gange
ist (d. h. die Kohärenzinformation
gesperrt ist), dann bleibt der Heimatagent 102 im Prüfzustand 168,
bis die im Gange befindliche Kohärenzaktivität zu Ende
geht. Der Heimatagent 102 geht im Anschluß daran
in einen Setzzustand 170 über.
-
Während
des Setzzustands 170 setzt der Heimatagent 102 den
Zustand des Verzeichniseintrages, der die Kohärenzinformation, die der betroffenen Kohärenzeinheit
entspricht, auf "gesperrt" bzw. "blockiert". Der Zustand "gesperrt"
verhindert, daß ein nachfolgende
Aktivität
auf der betroffenen Kohärenzeinheit
weitergeht bzw. weiter abläuft,
wodurch das Kohärenzprotokoll
des Computersystems 10 vereinfacht wird. Abhängig von,
ob es sich bei der Transaktion, die der empfangenen Kohärenzanforderung
entspricht, um eine Lese- oder Schreibtransaktion handelt, geht
der Heimatagent 102 in den Zustand "Lesen" bzw. "Read" 172 oder
den Zustand "Antwort schreiben" bzw. "Write Reply" 174 über.
-
Während
der Heimatagent 102 im Zustand "Read" 172 ist,
gibt er Kohärenzanfragen
an abhängige
Agenten 104 aus, die bezogen auf die Lesetransaktion zu
aktualisieren sind. Der Heimatagent 102 bleibt im Zustand
"Read" 172, bis ein Kohärenzabschluß vom Anforderungsagenten 100 empfangen wird,
worauf der Heimatagent 102 in den Zustand "Blockierungszustand
aufheben" bzw. "Clear Block Status" 176 übergeht.
In Ausführungsformen,
in denen eine Kohärenzanforderung
für einen
Lesevorgang scheitern kann, setzt der Heimatagent 102 den Zustand
des betroffenen Verzeichniseintrages beim Empfang eines Kohärenzabschlusses,
der ein Scheitern der Lesetransaktion anzeigt, auf den Zustand vor der
Kohärenzanforderung
zurück.
-
Während
des Schreibzustands 174 übermittelt der Heimatagent 102 eine
Kohärenzantwort
an den Anforderungsagenten 100. Der Heimatagent 102 bleibt
im Zustand "Write Reply" 174, bis ein Kohärenzabschluß vom Anforderungsagenten 100 empfangen
wird. Wenn Daten mit dem Kohärenzabschluß empfangen
werden, geht der Heimatagent 102 in den Zustand "Daten
schreiben" bzw. "Write Data" 178 über. Alternativ geht der Heimatagent 102 beim
Empfang eines keine Daten enthaltenden Kohärenzabschlusses in den Zustand
"Clean Block Status" 176 über.
-
Der Heimatagent 102 gibt
eine Schreibtransaktion auf dem SMP-Bus 20 während des
Zustands "Write Data" 178 heraus, um die empfangenen Schreibdaten
zu übertragen.
Zum Beispiel führt
eine Schreibstrom- bzw. Write-Stream-Operation (unten beschrieben)
zu einer Datenübertragung
von Daten an den Heimatagenten 102. Der Heimatagent 102 übermittelt
die empfangenen Daten an den Speicher 22 zum Speichern.
Anschließend
geht der Heimatagent 102 in den Zustand "Clear Block Status" 176 über.
-
Der Heimatagent 102 löscht im
Zustand "Clear Block Status" 176 den Zustand "blockiert"
der Kohärenzinformation,
die der von der empfangenen Kohärenzanforderung
betroffenen Kohärenzeinheit entspricht.
Auf die Kohärenzinformation
kann anschließend
zugegriffen werden. Der Zustand, der innerhalb der nicht-blockierten
Kohärenzinformation gefunden
wird, spiegelt die durch die zuvor empfangene Kohärenzanforderung
eingeleitete Kohärenzaktivität wider.
Nach dem Löschen
des Zustandes "blockiert" der entsprechenden Kohärenzinformation geht der Heimatagent 102 in
den Zustand "Idle" 166 über.
Vom Zustand "Idle" 166 geht der Heimatagent 102 beim
Empfang einer Kohärenzanforderung
in den Zustand "Receive Request" 162 über.
-
Gemäß 8 ist ein Flußdiagramm 180 dargestellt,
das einen beispielhaften endlichen Automaten bzw. eine Zustandsmaschine
für den
abhängigen Agenten 104 zeigt.
Der abhängige
Agent 104 empfängt
Kohärenzanfragen
während
eines Zustandes "Empfangen" bzw. "Receive" 182. Als Reaktion
auf eine Kohärenzanfrage
kann der abhängige
Agent 104 eine Übergabetransaktion
auf dem SMP-Bus 20 in eine Warteschlange einreihen. Die
Transaktion führt
zu einem Zustandswechsel in den Cachespeichern 18 und den
internen Cachespeichern der Prozessoren 16 entsprechend
der empfangenen Kohärenzanfrage.
Der abhängige
Agent 104 reiht die Transaktion während des Zustands "Anforderung senden"
bzw. "Send Request" 184 in eine Warteschlange ein.
-
Während
des Zustands "Antwort senden" bzw. "Send Reply" 186, übermittelt
der abhängige Agent 104 eine
Kohärenzantwort
an den Anforderungsagenten 100, der die Transaktion eingeleitet hat.
Es wird darauf hingewiesen, daß entsprechend verschiedenen
Ausführungsformen
der abhängige Agent 104 beim
Einstellen der Transaktion in eine Warteschlage für den SMP-Bus 20 oder
beim erfolgreichen Abschluß der
Transaktion auf dem SMP-Bus 20 vom Zustand "Send Request" 184 in
den Zustand "Send Reply" 186 übergehen kann. Im Anschluß an die Übertragung
der Kohärenzantwort
geht der abhängige
Agent 104 in einen Zustand "Idle" 188 über. Vom Zustand "Idle" 188 kann
der abhängige
Agent 104 beim Empfang einer Kohärenzanfrage in den Zustand
"Receive" 182 übergehen.
-
Gemäß den 9-12 sind
verschiedene Tabellen dargestellt, die beispielhafte Typen von Kohärenzanforderungen,
Kohärenzanfragen,
Kohärenzantworten
und Kohärenzabschlüssen auflisten.
Die in den Tabellen aus den 9-12 abgebildeten Typen können von
einer Ausführungsform
des Computersystems 10 verwendet werden. Andere Ausführungsformen
können
andere Sätze
von Typen verwenden.
-
9 ist
eine Tabelle 190, die die Typen von Kohärenzanforderungen auflistet.
Eine erste Spalte 192 listet einen Code für jeden
Anforderungstyp auf, der in 13 unten
verwendet wird. Eine zweite Spalte 194 listet die Typen
von Kohärenzanforderungen
auf, und eine dritte Spalte 196 gibt den Verursacher bzw.
Absender der Kohärenzanforderung
an. Ähnliche
Spalten werden in den 10-12 für Kohärenzanfragen, Kohärenzantworten
und Kohärenzabschlüsse verwendet.
Ein "R" zeigt den Anforderungsagenten 100 an, ein "S" zeigt
den abhängigen
Agenten 104 an, und ein "N" zeigt den Heimatagenten 102 an.
-
Eine Lesen-um-gemeinsam-zu-Nutzen-
bzw. Read-To-Share-Anforderung wird durchgeführt, wenn eine Kohärenzeinheit
in einem bestimmten SMP-Knoten nicht vorliegt und die Beschaffenheit bzw.
das Wesen der Transaktion vom SMP-Bus 20 an die Kohärenzeinheit
anzeigt, daß ein
Lesezugriff auf die Kohärenzeinheit
gewünscht
wird. Zum Beispiel kann eine im Cache speicherbare Lesetransaktion
zu einer Read-To-Share-Anforderung führen. Allgemein gesprochen
ist eine Read-To-Share-Anforderung
eine Anforderung einer Kopie der Kohärenzeinheit im Zustand "gemeinsam
genutzt". Ähnlich
ist eine Read-To-Own-Anforderung eine Anforderung einer Kopie der
Kohärenzeinheit
im Zustand "in Besitz". Kopien eine Kohärenzeinheit in anderen SMP-Knoten
sollten in den Zustand "ungültig"
geändert
werden. Eine Read-To-Own-Anforderung kann zum Beispiel als Reaktion
auf einen Cachefehlschlag einer im Cache speicherbaren Schreibtransaktion durchgeführt werden.
-
Strom-Lesen bzw. Read-Stream und Strom-Schreiben
bzw. Write-Stream sind Anforderungen, eine gesamte Kohärenzeinheit
zu lesen oder zu (be)schreiben. Diese Operationen werden typischerweise
für Blockkopier-Operationen
verwendet. Die Prozessoren 16 und die Cachespeicher 18 speichern
keine Daten im Cache, die als Reaktion auf eine Read-Stream- oder
Write-Stream-Anforderung bereitgestellt
werden. Stattdessen wird die Kohärenzeinheit
im Fall einer Read-Stream-Anforderung
als Daten dem Prozessor 16 übergeben oder die Daten werden
im Fall einer Write-Stream-Anforderung
in den Speicher 22 geschrieben. Es wird darauf hingewiesen,
daß Read-To-Share-, Read-To-Own-
und Read-Stream-Anforderungen als COMA-Operationen (z. B. RTS, RTO
und RS) oder als NUMA-Operationen (z. B. RTSN, RTON und RSN) durchgeführt werden
können.
-
Eine Zurückschreib- oder Write-Back-Anforderung
wird durchgeführt,
wenn eine Kohärenzeinheit
in den Heimatknoten der Kohärenzeinheit
zu schreiben ist. Der Heimatknoten antwortet mit der Berechtigung
bzw. Erlaubnis, die Kohärenzeinheit zurückzuschreiben.
Die Kohärenzeinheit
wird dann mit dem Kohärenzabschluß an den
Heimatknoten gereicht.
-
Die Anforderung zum Ungültigmachen
bzw. die Invalidate-Anforderung wird durchgeführt, um zu veranlassen, daß Kopien
einer Kohärenzeinheit
in anderen SMP-Knoten ungültig
gemacht werden. Ein typischer Fall, in dem eine Invalidate-Anforderung
erzeugt wird, ist eine Write-Stream-Transaktion auf eine gemeinsam genutzte
oder im Besitz befindliche Kohärenzeinheit.
Die Write-Stream-Transaktion
aktualisiert die Kohärenzeinheit,
und daher werden Kopien der Kohärenzeinheit
in anderen SMP-Knoten ungültig
gemacht.
-
I/O-Lese- und -Schreib- bzw. I/O-Read-
und -Write-Anforderungen werden als Reaktion auf I/O-Read- und -Write-Transaktionen übermittelt. I/O-Transaktionen
sind nicht-kohärent
(d. h. die Transaktionen werden nicht im Cache gespeichert und die
Kohärenz
wird für
diese Transaktionen nicht beibehalten bzw. aufrecht erhalten). I/O-Blocktransaktionen übertragen
einen größeren Teil
bzw. eine größere Menge
von Daten als normale I/O-Transaktionen. Nach einer Ausführungsform
werden vierundsechzig Bytes an bzw. von Information in einer Block-I/O-Operation übertragen,
während
acht Bytes in einer Nicht-Block-I/O-Transaktion übertragen werden.
-
Ausspül- bzw. Flush-Anforderungen
führen dazu,
daß Kopien
der Kohärenzeinheit
ungültig
gemacht werden. Modifizierte Kopien werden an den Heimatknoten zurückgegeben.
Unterbrechungs- bzw. Interruptanforderungen werden verwendet, um Unterbrechungen
bzw. Interrupts an ein bestimmtes Gerät bzw. eine bestimmte Einrichtung
in einem entfernten SMP-Knoten zu signalisieren. Der Interrupt kann
einem bestimmten Prozessor 16 übergeben werden, der als Reaktion
auf den Interrupt eine Interrupt Service Routine ausführen kann,
die an einer vordefinierten Adresse gespeichert ist. Administrative
Pakete werden verwendet, um gewisse Arten von Rücksetzsignalen zwischen den
Knoten zu senden.
-
10 ist
eine Tabelle 198, die beispielhafte Typen von Kohärenzanfragen
auflistet. Ähnlich
zur Tabelle 190 sind die Spalten 192, 194 und 196 in
der Tabelle 198 enthalten. Eine Read-To-Share-Anfrage wird an den Besitzer einer
Kohärenzeinheit übermittelt
und veranlaßt
den Besitzer dazu, die Daten an den anfordernden Knoten zu übertragen. Ähnlich veranlassen
Read-To-Own- und
Read-Stream-Anfrage den Besitzer der Kohärenzeinheit dazu, die Daten
an den anfordernden Knoten zu übertragen.
Darüber
hinaus veranlaßt
eine Read-To-Own-Anfrage den Besitzer dazu, den Zustand der Kohärenzeinheit
im Besitzerknoten auf "ungültig"
zu ändern.
Read-Stream- und Read- To-Share-Anfragen
veranlassen in dem Besitzerknoten einen Zustandswechsel zu "in Besitz" (von
"modifiziert").
-
Invalidate-Anfragen veranlassen keine Übertragung
der entsprechenden Kohärenzeinheit.
Stattdessen führt
eine Invalidate-Anfrage dazu, daß Kopien der Kohärenzeinheit
ungültig
gemacht werden. Schließlich
werden administrative Anfragen als Reaktion auf administrative Anforderungen übertragen. Es
wird darauf hingewiesen, daß jede
der Anfragen vom Heimatagenten 102 als Reaktion auf eine
Anforderung vom Anforderungsagenten 100 eingeleitet wird.
-
11 ist
eine Tabelle 200, die beispielhafte Antworttypen, die von einer
Ausführungsform
des Computersystems 10 verwendet werden, auflistet. Ähnlich zu
den 9 und 10 enthält 11 die Spalten 192, 194 und 196 für die Kohärenzantworten.
-
Eine Datenantwort ist eine Antwort,
welche die angeforderten Daten enthält. Der abhängige Agent, der Besitzer ist, übergibt
bei Kohärenzanforderungen
typischerweise die Datenantwort. Jedoch kann bei I/O-Leseanforderungen
der Heimatagent die Daten übergeben.
-
Die Bestätigungsantwort zeigt an, daß eine mit
einer bestimmten Kohärenzanforderung
verbundene Kohärenzanfrage
abgeschlossen ist. Typischerweise übergibt der abhängige Agent
die Bestätigungsantworten,
jedoch übergibt
der Heimatagent die Bestätigungsantworten
(zusammen mit Daten), wenn der Heimatagent der Besitzer der Kohärenzeinheit
ist.
-
Abhängiger-Agent-nicht-Besitzer-
bzw. Slave-Not-Owned-, Adresse-nicht-abgebildet- bzw. Address-Not-Mapped-
und Fehler- bzw. Error-Antworten werden vom abhängigen Agenten 104 übertragen,
wenn ein Fehler erkannt wird. Die Slave-Not-Owned-Antwort wird gesendet,
wenn ein abhängiger
Agent vom Heimatagenten 102 als Besitzer der Kohärenzeinheit
bezeichnet wird und der abhängige
Agent nicht mehr Besitzer der Kohärenzeinheit ist. Die Address-Not-Mapped-Antwort
wird gesendet, wenn der abhängige
Agent eine Anfrage empfängt, für die kein
Gerät bzw.
keine Einrichtung auf dem entsprechenden SMP-Bus 20 die
Besitzereigenschaft für
sich in Anspruch nimmt. Andere vom abhängigen Agenten erkannte Fehlerbedingungen
werden mittels der Fehlerantwort angezeigt.
-
Über
die Fehlerantworten hinaus, die dem abhängigen Agenten 104 zur
Verfügung
stehen, kann der Heimatagent 102 Fehlerantworten liefern. Die
negative Bestätigungsantwort
bzw. die Negative-Acknowledge (NACK) Antwort und die negative (NOPE)
Antwort werden vom Heimatagenten 102 verwendet, um anzuzeigen,
daß die
entsprechende Anforderung keine Bedienung durch den Heimatagenten 102 erfordert.
Die NACK-Transaktion kann verwendet werden, um anzuzeigen, daß die entsprechende
Anforderung vom Heimatagenten zurückgewiesen wird. Zum Beispiel
erhält
eine Interrupt-Anforderung ein NACK, wenn der Interrupt vom empfangenden
Knoten zurückgewiesen
wird. Eine Acknowledge- (ACK) Antwort wird übermittelt, wenn der Interrupt
vom empfangenden Knoten akzeptiert wird. Die NOPE-Transaktion wird
verwendet, um anzuzeigen, daß eine
entsprechende Flush-Anforderung für eine Kohärenzeinheit übermittelt
wurde, die nicht vom anfordernden Knoten gespeichert ist.
-
12 ist
eine Tabelle 202, die beispielhafte Typen von Kohärenzabschlüssen entsprechend
einer Ausführungsform
des Computersystems 10 darstellt. Ähnlich zu den 9-11 enthält 12 die Spalten 192, 194 und 196 für Kohärenzabschlüsse.
-
Ein Abschluß ohne Daten wird als ein Signal vom
Anforderungsagenten 100 an den Heimatagenten 102 verwendet,
daß eine
bestimmte Anforderung abgeschlossen ist. Als Reaktion darauf entfernt
der Heimatagent 102 die Sperre auf der entsprechenden Kohärenzinformation.
Zwei Arten von Datenabschlüssen
sind enthalten, die verschiedenen Transaktionen auf dem SMP-Bus 20 entsprechen.
Eine Art von Neuausgabe-Transaktion bezieht nur eine Datenphase
auf dem SMP-Bus 20 ein. Diese Neuausgabe-Transaktion kann
nach einer Ausführungsform für I/O-Schreib-
und Interrupt-Transaktionen verwendet werden. Die andere Art von
Neuausgabe-Transaktion bezieht sowohl eine Adreß- als auch eine Datenphase
ein. Kohärente
Schreibvorgänge
wie Write-Stream und Write-Back
können
die Neuausgabe-Transaktion, die sowohl Adreß- als auch Datenphasen umfaßt, verwenden.
Schließlich
ist für
Leseanforderungen, die scheiterten, den angeforderten Zustand zu
erwerben, ein Abschluß,
der das Scheitern bzw. Fehlschlagen anzeigt, enthalten.
-
Gemäß 13 ist eine Tabelle 210 dargestellt,
die Kohärenzaktivitäten als
Reaktion auf verschiedene Transaktionen auf dem SMP-Bus 20 zeigt. Die
Tabelle 210 stellt Transaktionen dar, die dazu führen, daß Anforderungen an andere SMP-Knoten 12 übermittelt
werden. Transaktionen, die innerhalb eines SMP-Knotens abgeschlossen
werden, sind nicht abgebildet. Ein "-" in einer Spalte zeigt an,
daß bezogen
auf diese Spalte in dem innerhalb einer bestimmten Zeile betrachteten
Fall keine Aktivität
durchgeführt
wird. Es ist eine Transaktionsspalte 212 enthalten, welche
die Transaktion angibt, die von dem Anforderungsagenten 100 über den
SMP-Bus 20 empfangen wird. Die MTAG-Spalte 214 gibt
den Zustand des MTAG für
die Kohärenzeinheit
an, auf die durch die der Transaktion entsprechenden Adresse zugegriffen
wird. Die abgebildeten Zustände
umfassen die oben beschriebenen MOSI-Zustände und einen "n"-Zustand.
Der "n"-Zustand zeigt an, daß auf
die Kohärenzeinheit
für den
SMP-Knoten, in dem die Transaktion eingeleitet wird, im NUMA-Modus
zugegriffen wird. Daher wird keine lokale Kopie der Kohärenzeinheit
im Speicher des anfordernden Knotens gespeichert. Stattdessen wird
die Kohärenzeinheit vom
Heimat-SMP-Knoten (oder einem Besitzerknoten) übertragen und an den anfordernden
Prozessor 16 oder Cache 18 ohne Speicherung im
Speicher 22 übermittelt.
-
Eine Anforderungsspalte 216 listet
die Kohärenzanforderung
auf, die an den durch die Adresse der Transaktion bezeichneten Heimatagenten übertragenen
wird. Beim Empfang der in Spalte 216 aufgelisteten Kohärenzanforderung,
prüft der
Heimatagent 102 den Zustand der Kohärenzeinheit für den anfordernden
Knoten, wie im Verzeichnis 66 aufgezeichnet. Die D-Spalte 218 listet
den aktuellen Zustand der Kohärenzeinheit
auf, der für
den anfordernden Knoten aufgezeichnet ist, und die D'-Spalte 220 listet
den Zustand der Kohärenzeinheit
auf, der für den
anfordernden Knoten aufgezeichnet wird, nachdem er vom Heimatagenten 102 als
Reaktion auf die empfangene Kohärenzanforderung
aktualisiert wurde. Darüber
hinaus kann der Heimatagent 102 eine erste Kohärenzanfrage
an den Besitzer der Kohärenzeinheit
erzeugen und zusätzliche
Kohärenzanfragen
an jeden beliebigen Knoten, der gemeinsam genutzte Kopien der Kohärenzeinheit
hält. Die
Kohärenz anfrage,
die an den Besitzer übertragen
wird, ist in Spalte 222 abgebildet, während die Kohärenzanfrage,
die an die gemeinsam benutzenden Knoten übertragen wird, in Spalte 224 abgebildet
ist. Weiterhin kann der Heimatagent 102 eine Kohärenzantwort an
den anfordernden Knoten übermitteln.
Die Antworten des Heimatagenten sind in Spalte 226 abgebildet.
-
Der abhängige Agent 104 in
dem SMP-Knoten, der als der Besitzer der Kohärenzeinheit angegeben ist, übermittelt
eine Kohärenzantwort
wie in Spalte 228 abgebildet. Die abhängigen Agenten 104 in den
Knoten, die als gemeinsam benutzende Knoten angegeben sind, antworten
auf die in Spalte 224 abgebildeten Kohärenzanfragen im Anschluß an die Zustandswechsel,
die durch die empfangene Kohärenzanfrage
angezeigt werden, mit den Kohärenzantworten,
die in Spalte 230 abgebildet sind.
-
Auf den Empfang der passenden Anzahl
von Kohärenzantworten
hin übermittelt
der Anforderungsagent 100 einen Kohärenzabschluß an den Heimatagenten 102.
Die Kohärenzabschlüsse, die für die verschiedenen
Transaktionen verwendet werden, sind in Spalte 232 abgebildet.
-
Als ein Beispiel stellt Zeile 234 die
Kohärenzaktivität als Reaktion
auf eine Read-To-Share-Transaktion
auf dem SMP-Bus 20 dar, für die der entsprechende MTAG-Zustand
"ungültig"
ist. Der entsprechende Anforderungsagent 100 übermittelt
eine Read-To-Share-Kohärenzanforderung
an den Heimatagenten, der durch die mit der Read-To-Share-Transaktion
verbundene globale Adresse bestimmt ist. Für den in Zeile 234 abgebildeten
Fall zeigt das Verzeichnis des Heimatknotens an, daß der anfordernde
Knoten die Daten im Zustand "ungültig"
speichert. Der Zustand in dem Verzeichnis des Heimatknotens wird
für den
anfordernden Knoten auf "gemeinsam genutzt" aktualisiert, und eine Read-To-Share-Kohärenzanfrage
wird vom Heimatagenten 102 an den Knoten übermittelt,
der vom Verzeichnis als der Besitzer angegeben wird. Es werden keine
Anfragen an gemeinsame Benutzer übermittelt,
da die Transaktion den Zustand "gemeinsam genutzt" zu erlangen sucht.
Der abhängige
Agent 104 im Besitzerknoten übermittelt die Daten, die der
Kohärenzeinheit
entsprechen, an den anfordernden Knoten. Beim Empfang der Daten übermittelt
der Anforderungsagent 100 innerhalb des anfordernden Knotens
einen Kohärenzabschluß an den
Heimatagenten 102 innerhalb des Heimatknotens. Die Transaktion
ist somit abgeschlossen.
-
Es ist darauf hinzuweisen, daß der in
der D-Spalte 218 abgebildete Zustand nicht mit dem Zustand
in der MTAG-Spalte 214 übereinzustimmen braucht.
Zum Beispiel stellt eine Zeile 236 eine Kohärenzeinheit
im Zustand "ungültig"
in der MTAG-Spalte 214 dar. Der entsprechende Zustand in
der D-Spalte 218 kann jedoch gleich "modifiziert", "in
Besitz" oder "gemeinsam genutzt" sein. Solche Situationen treten auf,
wenn eine vorausgehende Kohärenzanforderung
von dem anfordernden Knoten für
die Kohärenzeinheit
innerhalb des Computersystems 10 ausstehend ist, wenn der
Zugriff auf das MTAG 68 für die aktuelle Transaktion
zu der Kohärenzeinheit
auf dem Adreßbus 58 durchgeführt wird.
Jedoch wird wegen der Sperre des Verzeichniseintrages während eines bestimmten
Zugriffs die ausstehende Anforderung vor dem Zugriff auf das Verzeichnis 66 durch
die aktuelle Anforderung abgeschlossen. Aus diesem Grund sind die
erzeugten Kohärenzanfragen
vom Verzeichniszustand (der mit dem MTAG-Zustand zum Zeitpunkt des
Zugriffs auf das Verzeichnis übereinstimmt)
abhängig.
Für das
in Zeile 236 abgebildete Beispiel kann die Read-To-Share- Anforderung einfach
durch Neuausgabe der Lesetransaktion auf dem SMP-Bus 20 im
anfordernden Knoten abgeschlossen werden, da das Verzeichnis anzeigt,
daß die
Kohärenzeinheit
sich nun im anfordernden Knoten befindet. Daher bestätigt der
Heimatknoten die Anforderung, einschließlich einer Antwortzahl von
eins, und der anfordernde Knoten kann anschließend die Lesetransaktion erneut
ausgeben. Obwohl die Tabelle 210 viele Arten von Transaktionen auflistet,
wird darüber hinaus
darauf hingewiesen, daß zusätzliche
Transaktionen entsprechend verschiedener Ausführungsformen des Computersystems 10 verwendet
werden können.
-
Effiziente Blockkopier-Operationen
-
Gemäß 14 ist ein Diagramm dargestellt, das
einen lokalen, physikalischen Adreßraum 300 gemäß einer
Ausführungsform
des Computersystems 10 zeigt. Allgemein gesprochen bestimmt
ein Adreßraum
eine entsprechende Speicherstelle zu jeder bzw. für jede der
möglichen
Adressen innerhalb des Adreßraumes.
Der Adreßraum
kann gewissen Adressen innerhalb des Adreßraumes zusätzliche Eigenschaften zuweisen.
Nach einer Ausführungsform umfassen
die Adressen innerhalb des lokalen, physikalischen Adreßraumes 300 41
Bits.
-
Wie in 14 abgebildet
enthält
der lokale, physikalische Adreßraum 300 einen
LPA-Bereich 302 und
einen LPAfw-Bereich 304. Der LPA-Bereich 302 ermöglicht es,
daß Lese-
und Schreibtransaktionen auf entsprechenden Speicherstellen erfolgen können, sobald
ein Kohärenzzustand
erhalten wird bzw. erreicht ist, der zu der Transaktion konsistent
ist. Mit anderen Worten werden den Adressen innerhalb des LPA-Bereiches 302 keine
weiteren Eigenschaften zugewiesen. Nach einer Ausführungsform
ist der LPA-Bereich 302 diejenige Menge von Adressen innerhalb
des Adreßraumes 300 mit
den höchstwertigen
Bits (Most Signifikant Bits, MSBs) gleich 0xx00 (in binärer Darstellung).
Der "xx"-Teil der MSBs zeigt den SMP-Knoten 12 an, der
als der Heimatknoten für die
Adresse dient. Zum Beispiel kann xx=00 den SMP-Knoten 12A bezeichnen;
xx=01 kann den SMP-Knoten 12B bezeichnen,
etc. Die Adresse ist eine lokale, physikalische Adresse innerhalb
des LPA-Bereiches 302,
wenn der "xx"-Teil den SMP-Knoten 12 bezeichnet, der den
Prozessor 16 enthält,
der die Transaktion durchführt,
die der Adresse entspricht. Ansonsten ist die Adresse eine globale Adresse.
Darüber
hinaus ist die globale Adresse eine lokale, physikalische Adresse
innerhalb eines anderen SMP-Knotens 12.
-
Adressen innerhalb des LPAfw-Bereiches 304 beziehen sich auf
dieselbe Menge von Speicherstellen, auf die sich die Adressen innerhalb
des LPA-Bereiches 302 beziehen. Zum Beispiel kann sich
eine Adresse "A" innerhalb des LPA-Bereiches 302 auf eine
Speicherstelle 306, die den Datenwert "B" speichert, beziehen.
Die Adresse "A" innerhalb des LPAfw-Bereiches 304 bezieht
sich auch auf die Speicherstelle 306, die den Datenwert
"B" speichert. Bei diesem Beispiel bezieht sich die Adresse "A"
auf die Bits der Adresse mit Ausnahme der Bits, welche den LPAfw-Bereich 304 und den LPA-Bereich 302 bezeichnen
(z. B. die niederwertigen 36 Bits nach einer Ausführungsform).
Nach einer Ausführungsform
ist der LPAfw-Bereich 304 die Menge
von Adressen mit dem MSBs gleich 0xx10 (in binärer Darstellung). Das "xx"-Feld
wird wie oben beschrieben interpretiert. Es wird darauf hingewiesen,
daß das
Vorhandensein zweier oder mehrerer Bereiche von Adressen inner halb
eines Adreßraumes,
die dieselbe Menge von Speicherstellen bezeichnen, als Verwendung
von Pseudonymen bzw. als Aliasing bezeichnet wird.
-
Im Gegensatz zu den Transaktionen,
die auf dem LPA-Bereich 302 zulässig sind, sind Lesetransaktionen
auf dem LPAfw-Bereich 304 nicht
zulässig. Schreibtransaktionen
sind auf dem LPAfw-Bereich 304 zulässig. Nach
einer Ausführungsform
sind Write-Stream-Transaktionen auf dem LPAfw-Bereich 304 zulässig, während andere
Schreibtransaktionen nicht zulässig
sind.
-
Anstatt Daten, die von dem Prozessor 16 mit der
Schreibtransaktion übergeben
werden, zu speichern, erkennt die Systemschnittstelle 24 den Schreibvorgang
in den LPAcp-Bereich 304 und führt eine
Lese-Kohärenzanforderung
auf die globale Adresse durch, die aus der lokalen physikalischen Adresse
der Schreibtransaktion übersetzt
wurde. Die Bits der lokalen physikalischen Adresse, die den LPA-Bereich 302 und
den LPAcp-Bereich 304 angeben,
werden bei der Durchführung
der Übersetzung nicht
verwendet.
-
Beim Empfang der Daten, die der durch
die Lese-Kohärenzoperation
angeforderten Kohärenzeinheit
entsprechen, speichert die Systemschnittstelle 24 die Daten
in die Speicherstelle 306, die durch die lokale physikalische
Adresse der Schreibtransaktion, die zur Einleitung der Lese-Kohärenzoperation
führte,
angegeben ist. Der Kohärenzzustand innerhalb
des MTAG 68, der der lokalen physikalischen Adresse entspricht,
wird so aktualisiert, daß nachfolgende
Anforderungen an die Speicherstelle über den LPA-Bereich 306 erkennen,
daß die
Daten innerhalb des lokalen Speichers resident sind, und die Daten
von dort erhalten. Vorteilhafterweise werden die Daten dadurch aus
einer Kohärenzeinheit des
Quellblocks (der sich in einem entfernten, durch die entsprechende
globale Adresse angegebenen SMP-Knoten 12 befindet) in
eine entsprechende Kohärenzeinheit
des Zielblocks (der sich innerhalb desselben SMP-Knotens 12 befindet
wie der Prozessor, der die Schreibtransaktion auf den LPAcp-Bereich 304 eingeleitet hat)
kopiert. Das Kopieren wird durch das Ausführen einer Schreiboperation
vom Prozessor 16 durchgeführt. Die Daten, die vom Prozessor 16 übergeben
werden, werden verworfen, und der Prozessor 16 kann mit
anderen Verarbeitungsaufgaben fortfahren, ohne durch die Verzögerung der
Kopieroperation behindert zu werden. Um einen vollständigen Kopiervorgang
für jede
Kohärenzeinheit
innerhalb eines Quellblocks in die entsprechenden Kohärenzeinheiten
innerhalb des Zielblocks durchzuführen, führt der Prozessor 16 für jede von
den Kohärenzeinheiten
innerhalb des Blocks Schreibtransaktionen in den LPAcp-Bereich 304 aus.
Alternativ kann der Prozessor 16 Schreibtransaktionen nur
auf den Kohärenzeinheiten
durchführen,
auf die später
von dem Prozessor 16 oder anderen Prozessoren 16 innerhalb desselben
SMP-Knotens 12 zugegriffen werden soll.
-
Wie die vorstehende Diskussion zeigt,
wird Adressen innerhalb des LPAcp-Bereiches 304 die
zusätzliche
Eigenschaft zugewiesen, daß Schreibtransaktionen,
die unter Verwendung dieser Adressen durchgeführt werden, anzeigen, daß eine Blockkopier-Operation
durchgeführt
werden soll. Es ist darauf hinzuweisen, daß andere Kombinationen der MSBs
innerhalb des LPA-Adreßraumes 300 verwendet
werden können,
um andere zusätzliche
Eigenschaften zuzuweisen.
-
Allgemein gesprochen kann eine Blockkopier-Schreiboperation
anzeigen, daß Daten
von einer Kohärenzeinheit,
die durch die in der Systemschnittstelle 24 durchgeführte Übersetzung
in glo bale Adressen identifiziert wird, in eine lokale physikalische
Adresse kopiert werden sollen. Auch wenn in der vorstehenden Ausführungsform
gewisse Bits der Adresse einer Blockkopier-Schreiboperation die spezifische Kodierung
bilden, welche die Blockkopier-Schreiboperation identifizieren,
werden auch andere Formate der Blockkopier-Schreiboperation in Betracht
gezogen. Zum Beispiel geben Steuersignale auf dem Adreßbus 58 (in 2 abgebildet) die Art der
Transaktion an, die auf dem Adreßbus 58 übergeben
wird. Zusätzliche
Kodierungen der Steuersignale können
definiert werden, um anzuzeigen, daß eine Blockkopier-Schreiboperation
durchgeführt
wird, anstatt die MSBs der übergebenen
Adresse zu verwenden. Darüber
hinaus kann, anstatt einen Write-Stream-Befehl
zu verwenden, um Blockkopier-Schreibvorgänge durchzuführen, ein
neuer Befehl definiert werden. Der neue Befehl zeigt ausdrücklich an,
daß eine
Blockkopier-Operation durchzuführen
ist. Der Prozessor 16 kann dafür eingerichtet werden, den
Blockkopier-Befehl durchzuführen, indem
ein Blockkopier-Operationskommando auf dem Adreßbus 58 übergeben
wird. Die Blockkopier-Transaktion braucht keine Daten auf dem Datenbus 60 zu übergeben,
da die Daten aus einem anderen SMP-Knoten 12 gelesen werden
sollen.
-
15 zeigt
ein Flußdiagramm,
das die Schritte darstellt, die gemäß einer Ausführungsform durch
die Software durchgeführt
werden, um Blockkopier-Operationen unter Verwendung des LPAcp-Bereiches 304 durchzuführen. Bevor
Blockkopier-Schreiboperationen eingeleitet werden, erzeugt die Software
eine Übersetzung
der lokalen physikalischen Adresse des Zielblocks in die globale
Adresse des Quellblocks (Bezugszahl 310). Die Übersetzung erzeugt
eine Verbindung bzw. Verkettung zwischen dem Zielblock und dem Quellblock.
Zusätzlich
wird in dem Fall, daß der
Prozessor 16 in einem Modus ist, in dem eine Übersetzung
von virtuellen in lokale physikalische Adressen verwendet wird,
innerhalb der MMU 76 eine Übersetzung von der virtuellen
Adresse, die dem Zielblock zugewiesen ist, in die LPAcp-Adresse,
die dem Zielblock entspricht, erzeugt. Alternativ kann der Prozessor 16 in
einem Modus betrieben werden, in dem die Übersetzung von der virtuellen
in lokale physikalische Adressen ausgeschaltet ist. In einem solchen
Modus braucht die MMU-Übersetzung
nicht erzeugt zu werden.
-
Im Anschluß an Schritt 310 wird ein Schritt 312
durchgeführt,
in dem Schreiboperationen auf jede Kohärenzeinheit innerhalb des Zielblocks,
für die
Kopien gewünscht
werden, durchgeführt
werden. Die LPAcp-Bereich-Adressen werden
bei den Schreiboperationen verwendet, so daß die Systemschnittstelle 24 die
Kopierkommandos erkennen und die entsprechenden Lese-Kohärenzanforderung
durchführen
kann. Nach einer Ausführungsform
werden Write-Stream-Operationen
durchgeführt.
-
Nach Durchführung der Blockkopier-Schreiboperationen
kann eine Operation zur Synchronisierung durchgeführt werden
(Schritt 313). Die Operation zur Synchronisierung veranlaßt jede
der Operationen, die vor der Operation zur Synchronisierung durchgeführt wurden,
vor der Übergabe
von Operationen, die auf die Operation zur Synchronisierung folgen,
zum Abschluß zu
kommen. Auf diese Weise kann der Prozessor 16, der die
Blockkopier-Operation durchführt,
vor einem Zugriff auf die kopierten Daten feststellen, daß die Blockkopier-Operation
abgeschlossen ist. Schließlich
wird die MMU-Übersetzung von
einer LPAcp-Adresse in eine LPA-Adresse
modifiziert (Schritt 314).
-
16 zeigt
ein Flußdiagramm 320,
das die Verarbeitung von Transaktionen darstellt, die von der Systemschnittstelle 24 auf
dem Adreßbus 58 empfangen
werden. Wenn eine Transaktion entdeckt wird, bestimmt die Systemschnittstelle 24,
ob die Transaktion eine Wrtte-Stream-Transaktion mit einer Adresse innerhalb
des LPAcp-Bereiches 304 ist (Entscheidungskasten 322).
Wenn eine andere Art von Transaktion entdeckt wird, dann verarbeitet
die Systemschnittstelle 24 die Operation wie oben mit Bezug auf 13 beschrieben (Schritt
324). Wenn eine Write-Stream-Transaktion
in den LPAcp-Bereich 304 entdeckt
wird, werden die Schritte 326 und 328 durchgeführt.
-
Wie in Schritt 326 dargestellt,
konvertiert die Systemschnittstelle 24 die Write-Stream-Transaktion in eine
Lese-Kohärenzanforderung.
Die der Write-Stream-Transaktion zugeordnete Adresse wird in die
globale Adresse übersetzt,
die den Heimatknoten des Quellblocks angibt. Die Lese-Kohärenzanforderung
einschließlich
der globalen Adresse wird dann an den Heimatagenten in dem SMP-Knoten 12 übermittelt,
der durch die globale Adresse angegeben wird.
-
Beim Empfang der Daten, die der Lese-Kohärenzanforderung
entsprechen (d. h. beim Abschluß der
Kohärenzoperationen,
die der Lese-Kohärenzanforderung
entsprechen), speichert die Systemschnittstelle 24 die
Daten in die mit der Write-Stream-Transaktion übergebenen, lokale physikalische
Adresse (Schritt 328). Die Write-Stream-/Blockkopier-Operation
für die
Kohärenzeinheit
ist dann abgeschlossen.
-
17 zeigt
ein Blockdiagramm eines Teils einer Ausführungsform des Computersystems 10, das
die Durchführung
einer Blockkopier-Operation im Computersystem 10 weiter
veranschaulicht. 17 enthält einen
Verarbeitungskern 330, die MMU 76A einschließlich eines Übersetzungs-Vorgriffs-Puffers (Translation
Lookaside Buffer, TLB) 332, den SMP-Bus 20, die
Systemschnittstelle 24 einschließlich der LPA2GA-Übersetzungseinheit 82 und
das Netzwerk 14. Der Verarbeitungskern 330 und
die MMU 76A bilden die Ausführungsform eines in 2 dargestellten Prozessors 16A.
Der Verarbeitungskern 330 enthält Schaltungen zum Ausführen von
Befehlen, die durch den von Prozessor 16A implementierten
Befehlssatz definiert sind.
-
Wenn der Prozessor 16A einen
Write-Stream-Befehl ausführt,
wird gemäß dem vom Write-Stream-Befehl angegebenen
Adressierungsmodus eine virtuelle Adresse durch den Verarbeitungskern 330 gebildet.
Die virtuelle Adresse ist als VA1 in 17 dargestellt. Die MMU 76A durchsucht den
TLB 332 nach einem Eintrag, der VA1 in
eine LPA übersetzt.
Zum Beispiel kann der Eintrag 334 VA1 in eine
LPAcp-Adresse übersetzen. Wenn der Eintrag 334 nicht
innerhalb von TLB 332 gespeichert ist, durchsucht die MMU 76A einen
Bereich des Speichers 22, der dafür bestimmt ist, Übersetzungsinformation
für die
MMUs 76 zu speichern. Wie oben angemerkt wird die MMU 76 umgangen,
wenn der Prozessor 16A in einem Modus arbeitet, in dem
die Übersetzung
von virtuellen in physikalische Adressen abgeschaltet ist.
-
Der Prozessor 16A bietet
im Anschluß an
die Übersetzung
durch die MMU 76 die Write-Stream-Transaktion auf dem SMP-Bus 20 an.
Der Prozessor 16A kann eine Vielfalt von Warteschlangen
zum Speichern verschiedener Arten von Transaktionen vor der Übergabe
auf dem SMP-Bus 20 enthalten.
Die Systemschnittstelle 24 erkennt die Write-Stream-Transaktion
mit der LPAcp-Adresse. Unter Verwendung der LPA2GA-Übersetzungseinheit 82 übersetzt
die Systemschnittstelle
24 die LPAcp-Adresse
in eine globale Adresse. Die Adreßbits, die die LPA-Adresse
als zum LPAcp-Bereich 304 gehörig kennzeichnen,
werden durch die LPA2GA-Übersetzungseinheit 82 ignoriert.
Daher wird ein Eintrag 336, der eine Übersetzung von der LPA-Adresse
innerhalb des LPA-Bereiches 302 in
eine globale Adresse des Quellblocks (Quell-GA) enthält, verwendet,
um die LPAcp-Adresse der Write-Stream-Transaktion
zu übersetzen.
Die Systemschnittstelle 24 übermittelt im Anschluß daran
eine Read-Stream-Kohärenzanforderung
mit der Quell-GA über
das Netzwerk 14.
-
18 zeigt
ein Diagramm, das Kohärenzaktivitäten, die
als Reaktion auf eine Blockkopier-Operation durchgeführt werden, entsprechend einer
Ausführungsform
des Computersystems 10 darstellt. Ein Anforderungsagent 100,
ein Heimatagent 102 und ein abhängiger Agent 104 sind
in 18 abgebildet. Der
Anforderungsagent 100 übermittelt
beim Empfang einer Write-Stream-Transaktion
mit einer LPAcp-Adresse eine Read-Stream-Anforderung
an den Heimatknoten, der durch die Quell-GA bezeichnet ist (Bezugszahl 340).
Die Read-Stream-Anforderung ist eine NUMA-artige Anforderung, die anzeigt, daß die Kohärenzeinheit
nicht im Speicher 22, der im anfordernden Knoten enthalten
ist, gespeichert werden soll. Die Kohärenzeinheit wird als eine Kopie
in dem Speicher 22 abgelegt, aber die Kopie wird an einer
unterschiedlichen physikalischen Adresse gespeichert und ist dazu
gedacht, bezogen auf die Quellkopie inkohärent zu werden. Auf diese Art
ist das Ergebnis einer Kopieroperation ähnlich dem Resultat einer Kopieroperation
in einem SMP-System. In einem SMP-System wird die Quell-Kohärenzeinheit
gelesen, und die gelesenen Daten werden anschließend in einer Ziel-Kohärenzeinheit
gespeichert, die sich innerhalb des gemeinsam genutzten Speichers
an einer anderen Adresse als die Quell-Kohärenzeinheit befindet.
-
Beim Empfang der NUMA-Read-Stream-Anfordenang
vom Anforderungsagenten 100 stellt ein Heimatagent 102 den
Besitzer der angeforderten Kohärenzeinheit
fest. Der Heimatagent 102 übermittelt eine Read-Stream-Kohärenzanfrage
an den abhängigen
Agenten 104 als den Besitzer (Bezugszahl 342).
Da die Read-Stream-Kohärenzanforderung
als eine NUMA-Anforderung durchgeführt wird, gibt der Heimatagent 102 nicht
an, daß der
SMP-Knoten 12, der dem Anforderungsagenten 100 entspricht,
ein gemeinsamer Nutzer der Kohärenzeinheit
ist.
-
Der abhängige Agent 104 empfängt die Read-Stream-Kohärenzanfrage
und überträgt eine Datenkohärenzantwort
an den Anforderungsagenten 100 (Bezugszahl 344).
Weil eine Read-Stream-Kohärenzanfrage übermittelt
wird, ändert
der abhängige Agent 104 wiederum
als Reaktion auf die Übermittlung
der Daten an den Anforderungsagenten 100nicht den Kohärenzzustand
der Kohärenzeinheit. Daher
hat weder der Heimatagent 102 noch der abhängige Agent 104 irgendeine
Kohärenzinformation in
Bezug auf die Quell-Kohärenzeinheit
als Reaktion auf die NUMA-Read-Stream-Kohärenzanforderung, die
vom Anforderungsagenten 100 durchgeführt wird, geändert.
-
Beim Empfang der Datenkohärenzantwort vom
abhängigen
Agenten 104 speichert der Anforderungsagent 100 die
empfangenen Daten in den Speicher 22 innerhalb des Knotens,
der den Anforderungsagenten 100 enthält. Ein Kohärenzabschluß wird an den Heimatagenten 102 (Bezugszahl 346) gesandt.
Der Anforderungsagent 100 aktualisiert den Kohärenzzustand
der Ziel-Kohärenzeinheit
im MTAG 68 auf den Zustand "modifiziert". Auf diese Weise
finden Transaktionen, die auf dem Zielblock durchgeführt werden,
den passenden Besitzer, um lokal abgeschlossen zu werden. Da Transaktionen
auf dem Zielblock keine Kohärenzaktivität hervorrufen
und da der Heimatagent 102 nicht anzeigt, daß der SMP-Knoten,
der dem Anforderungsagenten 100 entspricht, eine Kopie
der Ziel-Kohärenzeinheit
speichert, wurde eine Kopie der Kohärenzeinheit erfolgreich von
dem Quellblock in den Zielblock kopiert. Es ist anzumerken, daß die Software
den Zielblock im Anschluß an
die Blockkopier-Operationen einer neuen globalen Adresse zuweist,
so daß der
Zielblock vollständig
vom Quellblock unabhängig
wird.
-
19 zeigt
ein Zeitdiagramm, das Transaktionen darstellt, die auf dem SMP-Bus 20 durchgeführt werden,
um einen Blockkopiervorgang in einem typischen verteilten, gemeinsam
benutzten Speichersystem durchzuführen. Sowohl Transaktionen
auf dem Adreßbus 58 als
auch Transaktionen auf dem Datenbus 60 sind abgebildet.
-
In einem typischen verteilten, gemeinsam benutzten
Speichersystem führt
ein Prozessor einen Blockkopiervorgang durch, indem er jede Kohärenzeinheit
von einen Quellblock liest und diese Kohärenzeinheit in einen Zielblock
speichert. Daher führt der
Prozessor eine Read-Stream-Transaktion
für eine
Kohärenzeinheit
"A" durch (Bezugszahl 350). Eine entsprechende Write-Stream-Transaktion
wird durchgeführt,
um die Kohärenzeinheit
"A" in den Zielblock zu speichern (Bezugszahl 352). Jedoch
kann die Write-Stream-Transaktion 352 nicht durchgeführt werden,
bis die Daten von der Read-Stream-Transaktion 350 empfangen
werden, da diese empfangenen Daten die Daten sind, die durch die
Write-Stream-Transaktion 352 transportiert werden. Daher
ist die Write-Stream-Transaktion 352 so dargestellt, daß sie im
Anschluß an
die Read-Stream-Transaktion 350 erfolgt, die Daten mittels
der Datenbustransaktion 354 empfängt. Bei den Fällen, in
denen die Kohärenzeinheit
"A" in einem entfernten Knoten gespeichert ist, kann eine relativ lange
Zeit zwischen dem Adreß-
und dem Datenanteil der Read-Stream-Transaktion für die Kohärenzeinheit
"A" vergehen. Im Anschluß an
die Durchführung
der Write-Stream-Transaktion 352, kann eine Read-Stream-Transaktion für die Kohärenzeinheit "B"
durchgeführt
werden (Bezugszahl 356), etc.
-
19 veranschaulicht,
daß in
einem typischen verteilten, gemeinsam genutzten Speichersystem zwei
Transaktionen zum Kopieren jeder Kohärenzeinheit in einem Block
verwendet werden. Darüber
hinaus kann die Write-Stream-Transaktion nicht durchgeführt werden,
bis Daten für
die Read-Stream-Transaktion empfangen werden (möglicherweise von einem entfernten
Knoten). Ferner verwenden zusätzliche
Read-Stream- und Write-Stream-Transaktionen für eine andere Kohärenzeinheit
dieselben Prozessorressourcen zum Speichern der Kohärenzeinheit
zwischen der Durchführung
der Read-Stream-Transaktion und der entsprechenden Write-Stream-Transaktion.
Daher werden die zusätzlichen
Read-Stream- und Write-Stream-Transaktionen angehalten, bis das
aktuelle Read-Stream-/Write-Stream-Paar zu Ende geführt ist.
-
Umgekehrt stellt 20 ein Zeitdiagramm einer Blockkopier-Operation
dar, wie sie von dem Computersystem 10 durchgeführt wird.
Sowohl die Transaktionen auf dem Adreßbus 58 als auch die Transaktionen
auf dem Datenbus 60 sind abgebildet.
-
Nach dem Erstellen der Übersetzung
von der lokalen physikalischen Adresse des Zielblocks in die globale
Adresse des Quellblocks beginnt ein Prozessor 16 innerhalb
des Knotens, der den Zielblock enthält, mit der Durchführung der
Write-Stream-Transaktionen unter Verwendung der LPAcp-Adressen,
die den gewünschten
Kohärenzeinheiten
innerhalb des Zielblocks entsprechen. Zum Beispiel werden in 20 die Write-Stream-Transaktionen 360, 362, 364 und 366 durchgeführt.
-
Darüber hinaus können die
Datenbustransaktionen für
jede Write-Stream-Transaktion durchgeführt werden, sobald das Busprotokoll
des SMP-Busses 20 es erlaubt, da die der Write-Stream-Transaktion
entsprechenden Daten verworfen werden. Daher werden die Ressourcen
innerhalb des Prozessors 16 für die nächste Write-Stream-Transaktion
schnell freigegeben, wodurch es möglich ist, daß es nur
eine minimale Verzögerung
zwischen aufeinander folgenden Write-Stream-Transaktionen auf dem Adreßbus 58 gibt.
Vorteilhafterweise wird die Anzahl von Transaktionen, die pro Kohärenzeinheit
durchgeführt
werden, von zwei auf eins reduziert. Überdies können die Transaktionen schneller
durchgeführt
werden, was zu einer höheren
Bandbreite für
die Durchführung von
Blockkopier-Transaktionen führt.
Die Kohärenzaktivität auf dem
Netzwerk 14, die der Kohärenzeinheit "B" entspricht,
kann beginnen, während
die Kohärenzaktivität, die einer
vorher angeforderten Kohärenzeinheit
"A" entspricht, noch im Gange ist. Ferner führt der Prozessor, der die
Blockkopier-Operation durchführt, nicht
die gesamte Kopieroperation durch. Daher kann der Prozessor andere
Verarbeitungsaufgaben durchführen,
während
die Blockkopier-Operation von der Systemschnittstelle 24 zu
Ende geführt wird.
Die Gesamtleistung des Computersystems 10 kann dadurch
noch über
die Leistungsgewinne hinaus, die durch die erhöhte Blockkopier-Bandbreite erzielt
wurden, vergrößert werden.
-
Obwohl die SMP-Knoten 12 in
den vorstehenden beispielhaften Ausführungsformen beschreiben wurden,
kann allgemein gesprochen eine Ausführungsform des Computersystems 10 einen
oder mehrere Verarbeitungsknoten enthalten. Wie hier verwendet,
enthält
ein Verarbeitungsknoten mindestens einen Prozessor und einen entsprechenden Speicher.
Darüber
hinaus sind Schaltungen für
die Kommunikation mit anderen Verarbeitungsknoten enthalten. Wenn
mehr als ein Verarbeitungsknoten in einer Ausführungsform des Computersystems 10 enthalten
ist, bilden die entsprechenden Speicher innerhalb der Verarbeitungsknoten
einen verteilten, gemeinsam genutzten Speicher. Ein Verarbeitungsknoten
kann als entfernt oder lokal bezeichnet werden. Ein Verarbeitungsknoten
ist ein entfernter Verarbeitungsknoten bezogen auf einen bestimmten
Prozessor, wenn der Verarbeitungsknoten den betreffenden Prozessor
nicht enthält.
Umgekehrt ist der Verarbeitungsknoten, der den betreffenden Prozessor
enthält,
der lokale Verarbeitungsknoten des betreffenden Prozessors.
-
Während
sich die vorstehenden beispielhaften Ausführungsformen auf die Verbesserung
des Durchsatzes (der Durchsatzleistung) bei Blockkopier-Operationen
von einem entfernten Verarbeitungsknoten in einen lokalen Verarbeitungsknoten konzentriert
haben, können ähnliche
Schemata angewandt werden, um den Durchsatz bei Blockkopier-Operationen
von einem lokalen Verarbeitungsknoten in einen entfernten Verarbeitungsknoten
zu verbessern. Eine solche Operation kann zum Beispiel als eine
Lese- oder Schreiboperation auf einen LPAcp2-Adreßraum kodiert
werden. Die LPA2GA-Übersetzung
würde dann
den Zielblock bestimmen, und die LPAcp2-Adresse
würde den Quellblock
bestimmen. Die Systemschnittstelle innerhalb des lokalen Verarbeitungsknotens
würde die LPAcp2-Adresse erkennen und die Daten von dem
lokalen Quellblock in den entfernten Zielblock übertragen. Zum Beispiel kann
eine Write-Stream-Operation verwendet werden.
-
In Übereinstimmung mit der vorstehenden Offenbarung
wurde ein Computersystem beschrieben, das effiziente Blockkopier-Operationen
durchführt.
Die Blockkupier-Operation wird zum großen Teil von Kommunikationsschaltungen
innerhalb der Verarbeitungsknoten des Computersystems durchgeführt. Die
Prozessoren, die vorher selbst Blockkopier-Operationen als Ganzes
bzw. vollständig
durchgeführt
haben, führen
Blockkopier-Schreiboperationen auf jeder zu kopierenden Kohärenzeinheit
durch. Die Anzahl von Operationen, die von einem Prozessor durchgeführt werden,
um eine bestimmte Blockkopier-Operation abzuschließen, wird
ungefähr
um die Hälfte
reduziert. Darüber
hinaus wird der Prozessor nicht während des gesamten Kopiervorgangs
mit der Blockkopier-Operation belastet. Stattdessen leitet der Prozessor
einen Kopiervorgang jeder gewünschten
Kohärenzeinheit
ein, und die Kommunikationsschaltungen führen die Kopieroperationen
zu Ende (einschließlich
der Zugriffe auf entfernte Verarbeitungsknoten), während der
Prozessor freigegeben wird, um andere Verarbeitungsaufgaben durchzuführen. Die
Leistungsfähigkeit
des Computersystems kann dadurch vorteilhaft erhöht werden.
-
Zahlreiche Variationen und Modifikationen liegen
für Fachleute
auf diesem Gebiet auf der Hand, sobald sie die obenstehende Offenbarung
vollständig gewürdigt haben.
Zum Beispiel können
alternative Ausführungsformen,
auch wenn hier verschiedene dargestellte Blöcke und Komponenten als Hardware-Ausführungsformen
beschrieben werden, die gesamte Hardwarefunktionalität oder einen
Teil davon als Software implementieren Die folgenden Ansprüche sollen
daher in dem Sinne interpretiert werden, daß sie alle solche Variationen
und Modifikationen umfassen.