-
Diese
Erfindung bezieht sich auf das Gebiet von Mehrprozessor-Computersystemen
und genauer gesagt auf Mechanismen und Verfahren zum Optimieren
von Spin-Lock-Operationen innerhalb eines Mehrprozessor-Computersystems
mit verteilten, gemeinsam genutzten Speicherarchitekturen.
-
Simultanverarbeitungs-Computersysteme
enthalten zwei oder mehr Prozessoren, die eingesetzt werden können, um
Verarbeitungs- bzw. Berechnungsaufgaben durchzuführen. Eine bestimmte Verarbeitungsaufgabe
kann auf einem Prozessor durchgeführt werden, während andere
Prozessoren damit nicht im Zusammenhang stehende Verarbeitungsaufgaben
durchführen.
Alternativ können
Komponenten einer bestimmten Verarbeitungsaufgabe unter mehreren
Prozessoren aufgeteilt werden, um die Zeit zu vermindern, die benötigt wird,
um die Verarbeitungsaufgabe als Ganze durchzuführen. Allgemein gesprochen
ist ein Prozessor eine Einrichtung bzw. ein Gerät, die bzw. das dafür eingerichtet
ist, eine Operation auf einem oder mehreren Operanden durchzuführen, um
ein Ergebnis zu erzeugen. Die Operation wird als Reaktion auf einen
Befehl durchgeführt,
der vom Prozessor ausgeführt
wird.
-
Die
Leistungsfähigkeit
von Spin-Lock-Alternativen wurde von T. E. Anderson in dem Dokument "The performance of
spin-lock alternatives for shared-memory multiprocessors", IEEE Transactions
on Parallel and Distributed Systems, IEEE INC., New York, US, Vol.
1, Nr. 1, 1990, Seiten 6–16,
beschrieben, XP000113909 wird als der nächst verfügbare Stand der Technik angesehen.
Dieses Dokument beschäftigt
sich hauptsächlich mit
der Hardware-Leistungsfähigkeit
verschiedener Spin-Lock-Algorithmen. Auf Seite 12, linke Spalte,
letzter Absatz – Ende
der rechten Spalte wird das Einreihen in Warteschlangen in gemeinsam
genutztem Speicher von per Spin-Lock wartenden Prozessoren beschrieben.
-
Eine
weit verbreitete Architektur in kommerziellen Simultanverarbeitungs-Computersystemen
ist die symmetrische Mehrprozessor-Architektur (Symmetric Multiprocessor
Architecture, SMP Architecture). Typischerweise weist ein SMP-Computersystem
mehrere Prozessoren auf, 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 pflegen, indem 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 an einer bestimmten
Speicheradresse gespeicherten Daten 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 den Cachespeichern, welche die Kopien
der vorherigen Daten speichern, zugeliefert bzw. bereitgestellt
werden. Alternativ dazu 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 übertragen
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, kann der Zustand des Cacheblocks
bzw. der Cache-Line,
der bzw. die die Daten enthält,
als Reaktion auf die kohärente
Transaktion aktualisiert werden.
-
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 Durchführung
von Transaktionen länger
dauern. Daher kann die Spitzenbandbreite des Busses kleiner werden,
wenn mehr Prozessoren hinzugefügt
werden.
-
Diese
Probleme werden durch den anhaltenden bzw. fortgesetzten Anstieg
der Betriebsfrequenzen und der Leistungsfähigkeit der Prozessoren weiter
vergrößert. Die
angestiegene Leistungsfähigkeit,
die durch höhere
Frequenzen ermöglicht
wird, und die weiter entwickelten Mikroarchitekturen von Prozessoren
führen zu
höheren
Bandbreitenanforderungen als frühere
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 Leistungsfähigkeit
einsetzt, 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 dazwischen
geschaltet ist. Wenn der Speicher, der in den mehreren Knoten enthalten
ist, als ein Ganzes betrachtet wird, bildet er 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 genutzten 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.
-
Trotz
ihrer Vorteile können
Simultanverarbeitungs-Computersysteme mit verteilten, gemeinsam
genutzten Speicherarchitekturen als Folge von Spin-Lock-Operationen
gravierende Leistungsverminderung erleiden. Im allgemeinen sind
Spin-Lock-Operationen mit Software-Locks bzw. -Sperren verbunden,
die von Programmen verwendet werden, um sicherzustellen, daß nur ein
paralleler Prozeß zu
einem Zeitpunkt auf einen kritischen Speicherbereich zugreifen kann.
Eine Vielzahl von Lock-Implementierungen wurden implementiert, angefangen
von einfachen Spin-Locks bis zu fortgeschrittenen, Warteschlangen-basierten
Locks. Obwohl einfache Spin-Lock-Implementierungen Verkehrsaufkommen
mit starker Häufung
erzeugen können,
wie unten beschrieben, sind sie immer noch der am verbreitetsten
verwendete Software-Lock innerhalb von Computersystemen.
-
Systeme,
die Spin-Lock-Implementierungen einsetzten, erfordern typischerweise,
daß ein
gegebener Prozeß eine
unteilbare Operation durchführt,
um Zugriff auf einen kritischen Speicherbereich zu erhalten. Zum Beispiel
wird gewöhnlich
eine unteilbare ("atomare") Test-Und-Setz-Operation verwendet.
Die Test-Und-Setz-Operation wird durchgeführt, um festzustellen, ob ein
Lock-Bit, das dem Speicherbereich zugeordnet ist, gelöscht ist,
und um das Lock-Bit atomar bzw. unteilbar zu setzen. Das heißt, der
Test ermöglicht es,
daß der
Prozeß feststellt,
ob der Speicherbereich frei von einer Sperre durch einen anderen
Prozeß ist, und
die Setz-Operation ermöglicht
es, daß der
Prozeß die
Sperre erhält,
wenn das Sperrbit nicht gesetzt ist. Wenn der Test des Sperrbits
anzeigt, daß der
Speicherbereich gerade gesperrt ist, leitet der Prozeß eine Softwareschleife
ein, in der das Sperrbit kontinuierlich gelesen wird, bis das Sperrbit
als gelöscht
erkannt wird, zu welchem Zeitpunkt der Prozeß die unteilbare Test-Und-Setz-Operation
erneut einleitet.
-
Spin-Locks
können
entweder mittels optimistischer oder mittels pessimistischer Spin-Lock-Algorithmen implementiert
werden. Ein optimistischer Spin-Lock wird durch den folgenden Algorithmus
anschaulich dargestellt:
-
-
Bei
dem oben dargestellten optimistischen Spin-Lock-Algorithmus führt der
Prozeß zuerst
eine "atomare" Test-Und-Setz-Operation
auf das Sperrbit aus, das dem Speicherbereich entspricht, auf den
Zugriff begehrt wird. Da die "atomare" Test-Und-Setz-Operation
einen Schreibvorgang beinhaltet, wird sie als eine Lies-Um-Zu-Besitzen-
bzw. Read-To-Own-Operation (RTO-Operation) in dem gemeinsam genutzten
Speichersystem behandelt. Das System setzt daraufhin als Reaktion
auf die "atomare" Test-Und-Setz-Operation die
Kohärenzeinheit,
die das Sperrbit enthält,
in einen modifizierten Zustand. Wenn die atomare Test-Und-Setz-Operation
scheitert, liest der Prozeß das
Sperrbit in einer wiederholten Weise, bis das Sperrbit von einem
anderen Prozeß gelöscht wird.
Der Prozeß veranlaßt dann
die atomare Test-Und-Setz-Operation erneut.
-
Ein
pessimistischer Spin-Lock wird durch den folgenden Algorithmus anschaulich
dargestellt:
-
-
Bei
dem pessimistischen Spin-Lock-Algorithmus liest der Prozeß zuerst
das Sperrbit, das dem Speicherbereich entspricht, auf den Zugriff
begehrt wird, in einer wiederholten Weise, bis das Sperrbit gelöscht wird.
Das Lesen des Sperrbits wird als eine Lies-Um-Gemeinsam-Zu-Nutzen-
bzw. Read-To-Share-Operation in dem gemeinsam genutzten Speichersystem
behandelt. Wenn der Prozeß feststellt,
daß das
Sperrbit gemäß der Lese-Operation(en)
gelöscht
ist, führt
der Prozeß eine
atomare Test-Und-Setz-Operation aus, um den Speicherbereich zu sperren
und Zugriff darauf zu erhalten. Wenn der Test beim Ausführen der
atomaren Test-Und-Setz-Operation scheitert, liest der Prozeß erneut
wiederholt das Sperrbit, bis es gelöscht ist.
-
Bei
beiden Implementierungen erzeugen alle N in einer Schleife wartenden
Prozessoren an die Cache-Zeit bzw. den Cache-Block gerichtete RTS-Transaktionen,
wenn ein Speicherbereich, der einem umstrittenen Spin-Lock entspricht,
freigegeben wird. In einer verteilten, gemeinsam genutzten Speicherarchitektur, werden
daher N RTS-Anforderungen bei dem Heimatknoten in eine Warteschlange
gestellt und werden eine zu einem Zeitpunkt bedient.
-
Der
erste Prozessor, der eine Datenantwort erhält, entdeckt die freie Sperre
und erzeugt eine RTO-Transaktion. Die RTO-Transaktion wird auf dem
Heimatknoten hinter die früheren
RTS-Anforderungen
in die Warteschlange gestellt. Da der Prozessor von jedem der übrigen (Prozessoren)
RTS-Anforderungen in ähnlicher
Weise einen Hinweis erhält,
daß die
Sperre frei ist, erzeugt jeder dieser Prozessoren auch eine RTO-Transaktion.
Wenn die erste RTO-Transaktion schließlich von dem Heimatknoten
bedient wird, sperrt der Prozessor, der diese Transaktion ausgegeben
hat, den Speicherbereich und erhält
Zugriff darauf. Die Test-Und-Setz-Operationen, die den RTO-Anforderungen der übrigen Prozessoren
entsprechen, werden daher scheitern, und jeder dieser Prozessoren
wird die in einer Schleife wartenden RTS-Anforderungen wieder aufnehmen.
-
Aus
der obigen Diskussion ist es ersichtlich, daß in dem Fall, daß mehrere
wartende Prozessoren um den Zugriff auf denselben Speicherbereich
wetteifern bzw. streiten, eine relativ große Anzahl von Transaktionsanforderungen
auftritt, wenn die Sperre freigegeben wird. Aufgrund dessen ist
die Verzögerung,
die mit der Freigabe einer Sperre verbunden ist, bis der nächste Mitbewerber
die Sperre erhalten kann, relativ hoch (d. h. in der Größenordnung
von N-mal der Verzögerung
für ein
RTS). Die große
Anzahl von Transaktionen kann die maximale Frequenz, in der der
Besitz der Sperre von Knoten zu Knoten wandern kann, weiter beschränken. Da
schließlich
nur einer der wartenden Prozessoren die Sperre erhalten wird, führen die
fehlgeschlagenen Test-Und-Setz-Operationen
der restlichen Prozessoren zu unerwünschten Request-To-Own-Anforderungen auf
dem Netzwerk. Die Kohärenzeinheit,
in der die Sperre gespeichert ist, wandert unennrünschterweise
von Prozessor zu Prozessor und von Knoten zu Knoten, und macht dabei
andere Kopien ungültig.
Das Verkehrsaufkommen im Netzwerk steigt dadurch trotz der Tatsache,
daß die
Sperre gesetzt ist, weiter an. Es ist daher ein Mechanismus zum
Optimieren der Operationen eines Mehrprozessor-Systems während Spin-Locks wünschenswert,
um die Anzahl von Transaktionsanforderungen zu reduzieren, die aus
einer Freigabe einer Sperre resultieren, und damit die Leistungsfähigkeit
des Gesamtsystems zu verbessern.
-
Spezielle
und bevorzugte Aspekte der Erfindung werden in den beigefügten unabhängigen und
abhängigen
Ansprüchen
dargelegt. Eigenschaften der abhängigen
Ansprüche
können
mit denjenigen der unabhängigen
Ansprüche
nach Bedarf und in anderen Kombinationen als denjenigen, die in
den Ansprüchen
explizit dargelegt werden, kombiniert werden.
-
Die
Probleme, die oben skizziert wurden, werden zum großen Teil
durch ein Simultanverarbeitungs-Computersystem gelöst, das
eine Vorrichtung und ein Verfahren zum Optimieren der Spin-Lock-Operationen
gemäß der vorliegenden
Erfindung einsetzt. Nach einer Ausführungsform beinhaltet ein Simultanverarbeitungs-Computersystem
eine Mehrzahl von Verarbeitungsknoten, die durch ein Zwischenverbindungs-Netzwerk
verbunden sind. Jeder Verarbeitungsknoten beinhaltet eine Mehrzahl
von Verarbeitungseinheiten, die über
einen symmetrischen Simultanverarbeitungsbus (Symmetrical Multiprocessing
(SMP) Bus) an ein Speichersubsystem und eine Systemschnittstelle angeschlossen
sind. Das Simultanverarbeitungssystem bildet eine verteilte, gemeinsam
genutzte Speicherarchitektur. Die Systemschnittstelle jedes Verarbeitungsknotens beinhaltet
einen Heimatagenten, der ein Verzeichnis der Kohärenzinformation unterhält, die
den dem Knoten zugeordneten Kohärenzeinheiten
entspricht. Der Heimatagent bedient darüber hinaus Transaktionsanforderungen,
die von anderen Verarbeitungsknoten über das Zwischenverbindungsnetzwerk
empfangen werden.
-
Um
die Leistung bzw. den Durchsatz während Spin-Lock-Operationen
zu optimieren, priorisiert der Heimatagent vorteilhafterweise das
Bedienen von Read-To-Own-(RTO)-Transaktionsanforderungen
vor dem Bedienen bestimmter Read-To-Share-(RTS)-Transaktionsanforderungen, sogar wenn
die RTO-Transaktionsanforderungen von dem Verarbeitungsknoten nach
dem Empfang der RTS-Transaktionsanforderungen empfangen wurden.
Nach einer Implementierung wird dies erreicht, indem eine erste
Warteschlange (hier auch als eine "Warteschlange hoher Priorität" oder eine "RTO-Warteschlange" bezeichnet) innerhalb
des Heimatagenten zum Empfang von RTO-Transaktionsanforderungen,
die über
das Zwischenverbindungsnetzwerk übermittelt
werden, bereitgestellt wird, die separat von einer zweiten Warteschlange
(hier auch als eine "Warteschlange
niederer Priorität" bezeichnet) zum
Empfang von RTS-Transaktionsanforderungen
ist. Die Warteschlangen können
jede mit FIFO-Puffern implementiert werden. Eine Heimatagentensteuerungseinheit
ist dafür
ausgelegt, eine innerhalb der RTO-Warteschlange anstehende RTO-Transaktionsanforderung
zu bedienen, bevor eine RTS-Transaktionsanforderung
in der zweiten Warteschlange bedient wird, auch wenn die RTS-Transaktionsanforderung
vor dem Empfang der RTO-Transaktionsanforderung von dem Verarbeitungsknoten
aus dem Zwischenverbindungsnetzwerk empfangen wurde. Nach einer
speziellen Implementierung bedient die Heimatagentensteuerungseinheit
abwechselnd eine nächste
Transaktionsanforderung in der Reihe innerhalb der RTO-Warteschlange
und dann eine nächste
Transaktionsanforderung in der Reihe innerhalb der zweiten Warteschlange
und so weiter in einer Ping-Pong-Manier,
wobei mit dem Bedienen einer RTO-Transaktionsanforderung in der
RTO-Warteschlange begonnen wird. Auf diese Weise läßt man RTS-Transaktionsanforderungen,
die in der zweiten Warteschlange anstehen, an mangelnder Bedienung
nicht "verhungern".
-
Da
eine separate Warteschlange für
RTO-Transaktionsanforderungen vorgesehen ist, können RTO-Transaktionsanforderungen
RTS-Transaktionsanforderungen, die bereits in der zweiten Warteschlange anstehen, überholen.
Dementsprechend kann eine bestimmte RTO-Transaktionsanforderung vor den früher empfangenen
RTS-Transaktionsanforderungen von der Heimatagentensteuerungseinheit
bedient werden. Die Anzahl der RTS-Transaktionsanforderungen, die
eine bestimmte RTO-Transaktionsanforderung überholen darf, ist sowohl von
der Anzahl der in der zweiten Warteschlange anstehenden RTS-Transaktionsanforderungen
als auch von der Anzahl von vorhergehenden RTO-Transaktionsanforderungen,
die innerhalb der RTO-Warteschlange anstehen, abhängig. Wenn
die Anzahl der in der zweiten Warteschlange anstehenden RTS-Transaktionsanforderungen
relativ groß ist
und die Anzahl der vorhergehenden RTO-Transaktionsanforderungen, die innerhalb
der RTO-Warteschlange anstehen, relativ klein ist, dann wird die
Anzahl von RTS-Transaktionsanforderungen, die die bestimmte RTO- Transaktionsanforderung überholen
wird, typischerweise relativ groß sein. Während Spin-Lock-Operationen ist es
typisch, daß eine
relative große
Anzahl von RTS-Transaktionsanforderungen in der zweiten Warteschlange
anstehen, besonders wenn sich viele Prozessoren um den Zugriff auf
denselben gesperrten Speicherbereich bemühen (d. h., da jeder dieser
Prozessoren sich in einer Spin-Lock-Operation befindet, in der RTS-Transaktionsanforderungen
wiederholt erzeugt werden).
-
Dementsprechend
erzeugt in dem Fall, daß ein
bestimmter Prozessor eine Datenantwort erhält, die eine freie Sperre eines
Speicherbereichs anzeigt, um den sich mehrere Prozessoren um Zugriff
bemühen,
der Prozessor eine RTO-Transaktionsanforderung. Da diese RTO-Transaktionsanforderung
in die RTO-Warteschlange gestellt wird, ist es wahrscheinlich, daß sie vor
dem Bedienen vieler von den RTS-Transaktionsanforderungen, die in
der zweiten Warteschlange anstehen (die von den anderen in einer
Schleife wartenden Prozessoren erzeugt wurden), von der Heimatagentensteuerungseinheit
bedient wird. Somit werden die anderen in einer Schleife wartenden
Prozessoren beim Vollenden der RTO-Transaktion keine freie Sperre
erkennen und daher keine RTO-Transaktionsanforderungen erzeugen.
Unnötiges
Wandern der Kohärenzeinheit,
in der die Sperre gespeichert ist, kann dadurch vermieden werden.
Darüber
hinaus wird auch das Ungültig-Machen anderer Kopien
der Kohärenzeinheit
vermieden. Da das gesamte Verkehrsaufkommen im Netzwerk reduziert wird,
kann die Gesamtleistung des Simultanverarbeitungssystems verbessert
werden.
-
Die
zweite Warteschlange, die RTS-Transaktionsanforderungen empfängt, kann
auch andere Arten von Transaktionsanforderungen wie zum Beispiel
unter anderem Ausspül-
bzw. Flush-Anforderungen,
Unterbrechungsanforderungen und Anforderungen zum Ungültig-Machen
empfangen. Ferner kann nach einer Implementierung die RTO-Warteschlange
zum Empfang der RTO-Transaktionsanforderungen
relativ klein sein im Vergleich zur Kapazität der zweiten Warteschlange.
Wenn die erste Warteschlange während
des Betriebs voll wird, wird zugelassen, daß anschließende RTO-Transaktionsanforderungen
in die zweite Warteschlange überquellen
bzw. -laufen. Zusätzlich
kann eine dritte Warteschlange innerhalb des Heimatagenten zum Empfang nicht-kohärenter I/O-Transaktionsanforderungen
vorgesehen werden.
-
Der
Heimatagent kann auch dafür
eingerichtet sein, mehrere Anforderungen gleichzeitig zu bedienen. In
einer solchen Implementierung kann eine Transaktionsblockierungseinheit
an die Heimatagentensteuerungseinheit angeschlossen sein, um das
Bedienen einer anstehenden kohärenten
Transaktionsanforderung zu verhindern, wenn eine andere Transaktionsanforderung,
die sich auf dieselbe Kohärenzeinheit
bezieht, bereits von der Heimatagentensteuerungseinheit bedient
wird. Die Transaktionsblockierungseinheit in einer solchen Implementierung
kann vorteilhafterweise das Verkehrsaufkommen im Netzwerk während Spin-Lock-Operationen
noch weiter reduzieren, um damit die Gesamtleistung des Systems
weiter zu verbessern.
-
Allgemein
gesprochen betrachtet die vorliegende Erfindung eine Vorrichtung
zur Verwendung innerhalb eines Heimatknotens eines Simultanverarbeitungs-Computersystems.
Das Simultanverarbeitungs-Computersystem beinhaltet eine Mehrzahl
von Verarbeitungsknoten, die durch ein Netzwerk verbunden sind,
wodurch sie eine verteilte, gemeinsam genutzte Speicherarchitektur
bil den. Die Vorrichtung weist eine erste Warteschlange auf, die
zur Aufnahme von Lies-Um-Zu-Besitzen-
bzw. Read-To-Own-Transaktionsanforderungen von der Mehrzahl von
Verarbeitungsknoten angeschlossen ist, und eine zweite Warteschlange,
die zur Aufnahme von Lies-Um-Gemeinsam-Zu-Nutzen- bzw. Read-To-Share-Transaktionsanforderungen
von der Mehrzahl von Verarbeitungsknoten angeschlossen ist. Eine
Heimatagentensteuerungseinheit ist angeschlossen, um die Read-To-Own- und die Read-To-Share-Transaktionsanforderungen
entgegenzunehmen und ist dafür
eingerichtet, die Read-To-Own-Transaktionsanforderungen, die von
der ersten Warteschlange gespeichert werden, zu bedienen und die
Read-To-Share-Transaktionsanforderungen, die von der zweiten Warteschlange
gespeichert werden, zu bedienen.
-
Die
Erfindung betrachtet ferner ein Verfahren zum Verarbeiten von Transaktionsanforderungen
in einem Heimatknoten innerhalb eines Simultanverarbeitungssystems
mit einer verteilten, gemeinsam genutzten Speicherarchitektur. Das
Verfahren weist das Empfangen einer Read-To-Share-Transaktionsanforderung
bei dem Heimatknoten, das Empfangen einer Read-To-Own-Transaktionsanforderung
bei dem Heimatknoten im Anschluß an
den Empfang der Read-To-Share-Transaktionsanforderung
durch den Heimatknoten und das Bedienen der Read-To-Own-Transaktionsanforderung
durch den Heimatknoten vor dem Bedienen der Read-To-Share-Transaktionsanforderung
auf.
-
Die
Erfindung betrachtet darüber
hinaus einen Heimatagenten zur Verwendung in einem Knoten eines Simultanverarbeitungs-Computersystems,
das eine Mehrzahl von Speicherelementen aufweist, die dafür eingerichtet
sind, Transaktionsanforderungen von anderen Knoten des Simultanverarbeitungs-Computersystems zu
empfangen, und eine Heimatagentensteuerungseinheit, die zum Empfang
der von der Mehrzahl von Speicherelementen gespeicherten Transaktionsanforderung
angeschlossen ist. Die Heimatagentensteuerungseinheit ist dafür eingerichtet,
eine gegebene Read-To-Own-Transaktionsanforderung
zu bedienen, bevor eine gegebene Read-To-Share-Transaktionsanforderung bedient wird,
sogar wenn die gegebene Read-To-Share-Transaktionsanforderung von dem Knoten
empfangen wird, bevor der Knoten die gegebene Read-To-Own-Transaktionsanforderung
empfängt.
-
Andere
Ziele und Vorteile der Erfindung werden beim Lesen der folgenden,
detaillierten Beschreibung und unter Bezugnahme auf die beigefügten Zeichnungen
offensichtlich, von denen:
-
1 ein
Blockdiagramm eines Mehrprozessor-Computersystems ist.
-
1A ein
konzeptionelles Blockdiagramm ist, das eine nicht-einheitliche Speicherarchitektur
darstellt, die von einer Ausführungsform
des in 1 gezeigten Computersystems unterstützt wird.
-
1B ein
konzeptionelles Blockdiagramm ist, das eine Nur-Cache-Speicherarchitektur
darstellt, die von einer Ausführungsform
des in 1 gezeigten Computersystems unterstützt wird.
-
2 ein
Blockdiagramm einer Ausführungsform
eines symmetrischen Simultanverarbeitungsknotens ist, der in 1 abgebildet
ist.
-
2A ein
beispielhafter Verzeichniseintrag ist, der in einer Ausführungsform
eines in 2 dargestellten 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
ist, die als Reaktion auf eine Lesen-um-zu-Besitzen-Anforderung bzw. Read-to-Own-Anforderung
von einem Prozessor durchgeführt
wird.
-
6 ein
Flußdiagramm
ist, das einen beispielhaften Zustandsautomaten bzw. endlichen Automaten 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
Blockdiagramm einer Ausführungsform
eines Heimatagenten ist, der innerhalb einer Systemschnittstelle
eines Mehrprozessor-Computersystems verwendet wird.
-
15a und 15b Blockdiagramme
sind, die beispielhafte anstehende Transaktionsanforderungen darstellen,
die sich in einer RTO-Warteschlange und in einer zweiten Warteschlange
innerhalb des Heimatagenten des Mehrprozessor-Computersystems befinden.
-
Während die
Erfindung für
verschiedene Änderungen
und alternative Formen empfänglich
ist, werden spezifische Ausführungsformen
davon als Beispiel in den Zeichnungen dargestellt und hier im Detail
beschrieben. Es sollte sich jedoch verstehen, daß die Zeichnungen und die detaillierte Beschreibung
hierzu nicht dazu gedacht sind, die Erfindung auf die spezielle
offenbarte Form einzuschränken,
sondern es ist im Gegenteil die Absicht, alle Änderungen, Äquivalenzen und Alternativen,
die in den Geltungs- bzw. Anwendungsbereich der vorliegenden Erfindung
fallen, abzudecken.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
In 1 wird
ein Blockdiagramm einer Ausführungsform
eines Simultanverarbeitungs-Computersystems 10 darstellt.
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 ausgestattet.
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. Ferner 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 Anschlüssen bzw.
Ports, Plattenlaufwerken, Modems, Druckern etc. zu bilden. Andere SMP-Knoten 12B–12D können ähnlich eingerichtet
sein.
-
Allgemein
gesprochen ist das Computersystem 10 zum Minimieren des
Verkehrsaufkommens im Netzwerk und zum Verbessern der Gesamtleistung
optimiert, wenn Spin-Lock-Operationen auftreten. Die Systemschnittstelle 24 jedes
SMP-Knotens 12 ist dafür
eingerichtet, das Bedienen von über
das Netzwerk 14 empfangenen RTO-Transaktionsanforderungen
gegenüber
dem Bedienen von bestimmten RTS-Transaktionsanforderungen zu priorisieren,
sogar wenn die RTO-Transaktionsanforderungen
von der Systemschnittstelle 24 nach den RTS-Transaktionsanforderungen
empfangen werden. Nach einer Implementierung wird dies erreicht,
indem eine Warteschlange innerhalb der Systemschnittstelle 24 für das Entgegennehmen
von RTO-Transaktionsanforderungen
vorgesehen wird, die separat ist von einer zweiten Warteschlange
für das Entgegennehmen
von RTS-Transaktionsanforderungen. In einer solchen Implementierung
ist die Systemschnittstelle 24 dafür eingerichtet, eine innerhalb
der RTO-Warteschlange anstehende RTO-Transaktionsanforderung zu
bedienen, bevor bestimmte, früher
empfangene RTS-Transaktionsanforderungen,
die in der zweiten Warteschlange anstehen, bedient werden.
-
Die
Systemschnittstelle 24 kann ferner dafür eingerichtet sein, abwechselnd
in einer Ping-Pong-Manier
für eine
Bedienung einer nächsten
RTO-Transaktionsanforderung in der Reihe in der RTO-Warteschlange zu
sorgen und dann eine nächste
Transaktionsanforderung in der zweiten Warteschlange zu bedienen.
Zusammen mit RTS-Transaktionsanforderungen kann die zweite Warte schlange
auch andere Arten von Anforderungen wie unter anderem Ausspül- bzw.
Flush-Anforderungen,
Unterbrechungsanforderungen und Anforderungen zum Ungültig-Machen
puffern.
-
Während Spin-Lock-Operationen
ist es typisch, daß eine
relativ große
Anzahl von RTS-Transaktionsanforderungen
in der zweiten Warteschlange ansteht, besonders wenn sich viele
Prozessoren um Zugriff auf denselben gesperrten Speicherbereich
bemühen
(d. h., da jeder dieser Prozessoren sich in einer Spin-Lock-Operation
befindet, in der jeweils RTS-Transaktionsanforderungen erzeugt werden).
Wenn ein bestimmter Prozessor eine Datenantwort erhält, die
eine freie Sperre anzeigt, erzeugt dieser Prozessor eine RTO-Transaktionsanforderung.
Da diese RTO-Transaktionsanforderung
in die RTO-Warteschlange der Systemschnittstelle 24 gestellt
wird und da viele frühere
RTS-Transaktionsanforderungen, die von den anderen in einer Schleife
wartenden Prozessoren immer noch der Reihe nach in der zweiten Warteschlange
stehen können,
kann die RTO-Transaktionsanforderung relativ schnell zur Position
des Nächsten
in der Reihe der RTO-Warteschlange
vorrücken.
Dementsprechend kann die Systemschnittstelle 24 die RTO-Transaktionsanforderung
vor früher
empfangenen RTS-Transaktionsanforderungen bedienen. Als eine Folge
davon werden beim Vollenden der RTO-Transaktionsanforderung die
anderen in einer Schleife wartenden Prozessoren keine freie Sperre
erkennen und daher keine RTO-Transaktionsanforderungen
erzeugen. Unnötiges
Wandern der Kohärenzeinheit,
in der die Sperre gespeichert ist, kann dadurch vermieden werden.
Darüber
hinaus wird auch das Ungültig-Machen
anderer Kopien der Kohärenzeinheit
vermieden. Zusätzlich
wird der nächste
Prozessor, der die Sperre erhalten soll, sie schneller bekommen
(die sogenannte Übergabezeit
ist kürzer),
da seine RTO-Transaktionsanforderung die anstehenden RTS-Transaktionsanforderungen überholen
wird. Da das gesamte Verkehraufkommen im Netzwerk reduziert wird,
kann die Gesamtleistung des Simultanverarbeitungssystems verbessert
werden.
-
Architekturübersicht
-
In
dem hier verwendeten Sinn 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.
-
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 konfor mer
SPARC-Prozessor. Man beachte jedoch, 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 Cachespeicher
der Stufe 1 sind). Wenn die Prozessoren 16 nicht
mit internen Cachespeichern ausgestattet sind, dann sind die externen
Cachespeicher 18 Cachespeicher der Stufe 1. Man
beachte, 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
einen schnellen Zugriff auf Speicheradressen, auf die vom daran
angeschlossenen Prozessor 16 häufig zugegriffen wird. Man
beachte, 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 eingesetzt
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 übermittelt
werden, und eine Datenphase, in welcher die Daten auf dem Datenbus übermittelt
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 auf vielerlei Weisen 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 gekennzeichnet
werden.
-
Der
Speicher 22 ist dafür
eingerichtet, Daten und Befehlscode zum Gebrauch durch die Prozessoren 16 zu
speichern. Der Speicher 22 weist vorzugsweise dynamischen,
wahlfrei zugreifbaren Speicher (Dynamic Random Access Memory, DRAM)
auf, 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 Transaktion auf dem SMP-Bus 20 bereit.
Nach der abgebildeten Ausführungsform
ist die Systemschnittstelle 24 an ein Punkt-zu-Punkt-Netzwerk 14 angeschlossen.
Man beachte jedoch, daß nach
alternativen Ausführungsformen
andere Netzwerke verwendet werden können. In einem Punkt-zu-Punkt-Netzwerk sind
individuelle Verbindungen zwischen jedem Knoten in dem Netzwerk
vorhanden. Ein bestimmter Knoten kommuniziert direkt mit einem zweiten
Knoten über
eine dedizierte Verbindung. 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 sei 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.
-
Man
beachte, 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
Möglichkeiten
dar, wie jeder SMP-Knoten 12 aus 1 Daten
im Cache speichern und Speicherzugriffe durchführen kann. Details bezüglich der
Art und Weise, in der das Computersystem 10 solche Zugriffe
unterstützt,
werden unten genauer beschrieben.
-
In 1A wird
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 für
den 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 speichert, auf die zugegriffen wird. 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 Übertragungen 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 einige 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 Leistungs- bzw. Durchsatzeigenschaften 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 bzw. umfassen, wenn ein bestimmter Prozessor 32 wiederholte
Zugriffe auf entfernte Knoten durchführt.
-
In 1B wird
ein logisches Diagramm einer zweiten Speicherarchitektur 40 dargestellt,
die von dem Computersystem 10 in 1 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", auf bzw. 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
der 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 von einem SMP-Knoten 12A–12D auf
eine Speicheradresse in einer NUMA-Art und Weise zugegriffen werden,
während
von einem anderen SMP-Knoten 12A–12D auf sie in einer
COMA-Art und Weise 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 nachstehend wiedergegeben.
-
Nach
einer Ausführungsform
wird die COMA-Architektur unter Verwendung einer Kombinati on 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
Reservieren und Freigeben von im Cache gespeicherten Seiten verantwortlich.
-
2 stellt
Details einer Implementierung eines SMP-Knotens 12A dar,
der im allgemeinen dem in 1 abgebildeten
SMP-Knoten 12A entspricht. Andere Knoten 12 können ähnlich eingerichtet
sein. Man beachte, daß alternative,
spezifische Implementierungen jedes SMP-Knotens 12 aus 1 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 unter gewissen
Bedingungen ein Ignoriersignal 70 auf dem Adreßbus 58,
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 Hauptplatine,
auf der der SMP-Bus 20 liegt, eingesetzt bzw. eingefügt sein
kann. 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
in der Ausgangswarteschlange 72 gespeicherten Transaktionen
in der Reihenfolge durch, in der diese Transaktionen 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 wie
die 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
den SMP-Knoten 12A. Jedoch ist zu erwarten, daß das Gesamtsystem
eine einzige globale Speicherreihenfolge hat. Diese Annahme einer
Reihenfolge erzeugt sowohl in der NUMA- als auch in der COMA-Architektur,
die vom Computersystem 10 eingesetzt bzw. angewandt wird,
ein Problem, da die globale Reihenfolge möglicherweise aufgrund der Reihenfolge
von Operationen auf dem Netzwerk 14 aufgebaut werden muß. Wenn
zwei Knoten eine Transaktion auf einer Adresse durchführen, definiert
die Reihenfolge, in der die entsprechenden Kohärenzoperationen 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
zu arbeiten, die durch die Ausgangswarteschlangen-/Eingangswarteschlangenstruktur
der Adreßsteuerung 52 auferlegt
werden. Wenn eine Transaktion auf dem Adreßbus 58 überreicht wird
und der Logikblock 62 der Systemschnittstelle erkennt,
daß eine
entfernte Transaktion als Reaktion auf die Transaktion durchgeführt werden
soll, setzt 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.
-
Man
beachte, 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 auferlegt
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.
Man beachte ferner, 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. Man
beachte, 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 wie
die Adreßsteuerung 52 beinhalten.
Nach einer Ausführungsform
verwendet die Datensteuerung 54 mehrere physikalische Einheiten
in einer byteweise aufgeteilten 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
(in Form der MMUs 76) geleitet, 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 Verarbeitungsaufgabe den Zugriff auf gewisse Speicheradressen
zu gewähren
oder zu verweigern. Auf diese Weise werden Daten und Befehle innerhalb
einer Verarbeitungsaufgabe von den Daten und Befehlen einer anderen
Verarbeitungsaufgabe isoliert. Zusätzlich können Teile der Daten und Befehle
einer Verarbeitungsaufgabe auf ein Festplattenlaufwerk per Paging ausgelagert
werden. Wenn ein Teil per Paging ausgelagert wird, wird die Übersetzung
ungültig
gemacht. Beim Zugriff auf den Teil durch die Verarbeitungsaufgabe
tritt eine Unterbrechung bzw. ein Interrupt aufgrund der fehlgeschlagenen Übersetzung
auf. Der Interrupt erlaubt es dem Betriebssystem, die entsprechende
Information vom Festplattenlaufwerk zu holen. 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.
-
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 sich der Prozessor 16 befindet, zugeordnet 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 geht die Adreßtransaktion
weiter. Wenn jedoch der Kohärenzzustand
anzeigt, daß eine
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 passende Kohärenzzustand erlangt ist, 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 Heimatknoten zurückgespeichert, wenn
die geänderte
Kohärenzeinheit
vom SMP-Knoten 12 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 gemeinsam genutzte
Kopien haben können.
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, die Kohärenzeinheit
jedoch nicht aktualisieren darf, ohne den Zustand "im Besitz" zu erhalten bzw.
an sich zu bringen. 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.
-
Im
hier verwendeten Sinne 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, der bzw. die 64 zusammenhängende Bytes
aufweist. Es versteht sich jedoch, daß eine Kohärenzeinheit jede beliebige
Anzahl von Bytes aufweisen 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 für
jede NUMA-artige Seite globale Adressen in den MMUs 76.
Umgekehrt setzt das Betriebssystem für jede COMA-artige Seite LPAs
in den MMUs 76. Man beachte, 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 dargeboten wird). Alternativ kann
eine LPA in eine GA übersetzt
werden, wenn die LPA Speicherstellen anzeigt, die zum Speichern
von Kopien von Daten mit einer Heimat in einem anderen SMP-Knoten 12 verwendet
werden.
-
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ärenz einheit
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 Cachespeichern 18 und den Prozessoren 16 mittels
Mitlesens 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).
-
Man
beachte, 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. Im Gegensatz dazu 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 zugeteilt).
Daher werden Blöcke
des Speichers 22 gleichfalls einer bestimmten globalen
Adresse auf der Basis von Seiten zugeteilt. Wie oben dargelegt,
werden jedoch Kohärenzzustände und
Kohärenzaktivitäten auf
einer Kohärenzeinheit
durchgeführt.
Daher werden die Daten, die der Seite entsprechen, nicht notwendigerweise
in den zugeteilten Speicher übertragen,
wenn eine Seite im Speicher einer bestimmten globalen Adresse zugeteilt
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 bzw. Zuteilen der Seite
im Speicher 22 übertragen,
reduziert wird.
-
Man
beachte, 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.
-
In 2A wird
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 führt die
Kohärenzeinheit
entweder im Zustand "modifiziert" oder im Zustand "in Besitz". Typischerweise
erhält
bzw. erwirbt der besitzende SMP-Knoten 12A–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
weist das Besitzerfeld 77 zwei Bits auf, 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 geschrieben 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 geschrieben hat.
-
3 zeigt
ein Blockdiagramm einer Ausführungsform
der Systemschnittstelle 24. 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) dargestellt.
-
Die
Systemschnittstelle 24 beinhaltet auch Eingabe- und Ausgabewarteschlangen
zum Speichern von Transaktionen, die über den SMP-Bus 20 oder über das
Netzwerk 14 durchzuführen
sind. 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 Headerpa keten
zum und vom Netzwerk 14. Headerpakete bestimmen eine auszuführende Operation
und geben die Anzahl und das Format jedweder Datenpakete an, die
folgen können.
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-Datenbus 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 zu überreichen
sind. 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 aus dem MTAG 68 überprüft. Gemäß 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. Man beachte, daß der
Heimatagent 102 die Kohärenzinformation
gemäß der durchgeführten Kohärenzaktivität sofort
aktualisieren kann, wenn die Kohärenzanforderung
empfangen wird, da die Kohärenzinformation
bis zum Abschluß der
Kohärenzaktivität gesperrt
bzw. blockiert ist.
-
Der
abhängige
Agent 104 empfängt
Kohärenzanfragen
von Heimatagenten anderer SMP-Knoten 12 über die
Eingabe-Header-Warteschlange 84. Als Reaktion auf eine
bestimmte Kohärenzanfrage
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 die 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, in eine lokale physikalische Adresse mittels der
GA2LPA-Übersetzungseinheit 80 ü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
(Write Invalidate Policy). Mit anderen Worten werden in dem Fall,
daß ein Prozessor 16 innerhalb
eines SMP-Knotens 12 eine Kohärenzeinheit aktualisiert, jegliche
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 (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 der SMP-Knoten 12 gespeichert sind, übertragen.
-
4 zeigt
ein Diagramm, das typische Kohärenzaktivitäten darstellt,
die zwischen dem Anforderungsagenten 100 eines ersten SMP-Knotens 12A–12D (dem "anfordernden Knoten"), dem 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
gemäß einer
Ausführungsform
des in 1 abgebildeten Computersystems 10 verwendet
werden, werden unten unter Bezug auf die 9–13 weiter
beschrieben. Die Bezugszahlen 100, 102 und 104 werden
verwendet, um für
den Rest dieser Beschreibung Anforderungsagenten, Heimatagenten
und abhängige
Agenten zu bezeichnen. Es versteht sich, daß dann, wenn ein Agent mit einem
anderen Agenten kommuniziert, die beiden Agenten sich 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 Heimatknoten, 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
innehat, erzeugen (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, nicht vom Heimatagenten 102 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 auch die Anzahl der Kohärenzantworten
anzeigen, die von den abhängigen
Agenten 104 kommen. 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 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ärenzanforderung 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
Kohä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
der 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).
-
Man
beachte, daß jeder
Kohärenzanforderung
vom Anforderungsagenten 100, der die Kohärenzanforderung
ausgibt, ein eindeutiges Tag zugewiesen wird. Nachfolgende 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. Man beachte
ferner, 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
brauchen nur den anfordernden Knoten und den Heimatknoten einzubeziehen.
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 Anforderer-Tag verwendet.
-
Kommen
wir nun zu 5, einem Diagramm, das eine
Kohärenzaktivität 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 darstellt. Eine Read-To-Own-Transaktion
wird durchgeführt,
wenn ein Cachefehlschlag bzw. ein fehlgeschlagener Cachezugriff
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 dargestellt.
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-Operation 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 Zählung
bzw. 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. Man beachte,
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.
-
In 6 ist
ein Flußdiagramm 140 dargestellt,
das einen beispielhaften Zustandsautomaten bzw. endlichen Automaten
zur Verwendung durch den Anforderungsagenten 100 darstellt.
Der Anforderungsagent 100 kann mehrere unabhängige Kopien
des durch das Flußdiagramm 140 dargestellten
endlichen Automaten enthalten, so daß mehrere Anforderungen gleichzeitig
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 144" eine
Zeitüberwachung
bzw. 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 in einen 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. Man
beachte, daß bei
Lesetransaktionen 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 "Frei" bzw. "Idle" 148 über. Eine
neue Transaktion kann dann vom Anforderungsagenten 100 unter
Verwendung des in 6 dargestellten endlichen Automaten
bedient werden.
-
Im
Gegensatz dazu 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 darin 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" ("Igno red Write Active") 156 oder
in den Zustand "Ignoriertes
Schreiben abgeschlossen" ("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.
-
Kommen
wir als nächstes
zu 7, einem Flußdiagramm 160,
das einen beispielhaften endlichen Automaten für den Heimatagenten 102 darstellt.
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.
-
Im
Gegensatz dazu 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 speichert,
die der betroffenen Kohärenzeinheit
entspricht, auf "gesperrt" bzw. "blockiert". Der Zustand "gesperrt" verhindert, daß eine nachfolgende
Aktivität
auf der betroffenen Kohärenzeinheit weitergeht
bzw. weiter abläuft,
wodurch das Kohärenzprotokoll
des Computersystems 10 vereinfacht wird. Abhängig davon,
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, woraufhin 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 "Clear 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.
-
8 zeigt
ein Flußdiagramm 180,
das einen beispielhaften endlichen Automaten für abhängige Agenten 104 darstellt.
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 Transaktion zur Übergabe 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 gemäß der empfangenen
Kohärenzanfrage.
Der ab hä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. Man beachte, daß gemäß verschiedener
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.
-
In 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 der 9–12 dargestellten
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 Ausgangspunkt
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 "H" 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 Art der Transaktion
vom SMP-Bus 20 auf 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" bzw. "shared". Ähnlich ist
eine Read-To-Own-Anforderung eine Anforderung einer Kopie der Kohärenzeinheit
im Zustand "in Besitz" bzw. "owned". Kopien der Kohärenzeinheit
in anderen SMP-Knoten sollten in den Zustand "ungültig" bzw. "invalid" geändert werden.
Eine Read-To-Own-Anforderung kann zum Beispiel als Reaktion auf
einen Cachefehlschlag bzw. einen fehlgeschlagenen Cachezugriff 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.
Man beachte, 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 übergeben.
-
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
bzw. eine Unterbrechungsbedienungsroutine 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-Anfragen 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 übermittelt.
Man beachte, 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 auflistet,
die von einer Ausführungsform des
Computersystems 10 verwendet werden. Ähnlich zu den 9 und 10 enthält 11 die
Spalten 192, 194 und 196 für die Kohärenzantworten.
-
Eine
Datenantwort bzw. Data-Antwort 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
bzw. Acknowledge-Antwort zeigt an, daß eine mit einer bestimmten
Kohärenzanforderung
verbundene Kohärenzanfrage
abgeschlossen ist. Typischerweise übergeben abhängige Agenten
die Bestätigungsantworten,
jedoch übergeben
Heimatagenten die Bestätigungsantworten
(zusammen mit Daten), wenn der Heimatknoten 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
entspre chende Flush-Anforderung für eine Kohärenzeinheit übermittelt
wurde, die vom anfordernden Knoten nicht gespeichert wird.
-
12 ist
eine Tabelle 202, die beispielhafte Typen von Kohärenzabschlüssen gemäß 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, daß eine
bestimmte Anforderung abgeschlossen ist, vom Anforderungsagenten 100 an
den Heimatagenten 102 verwendet. Als Reaktion darauf entfernt
der Heimatagent 102 die Sperre auf bzw. von der entsprechenden
Kohärenzinformation.
Zwei Arten von Datenabschlüssen sind
enthalten, die verschiedenen bzw. unterschiedlichen Transaktionen
auf dem SMP-Bus 20 entsprechen. Eine Art von Neuausgabe-Transaktion
zieht nur eine Datenphase auf dem SMP-Bus 20 nach sich.
Diese Neuausgabe-Transaktion kann nach einer Ausführungsform
für I/O-Schreib-
und Interrupt-Transaktionen verwendet werden. Die andere Art von
Neuausgabe-Transaktion zieht sowohl eine Adreß- als auch eine Datenphase nach
sich. 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 bzw. denen es mißlingt,
den angeforderten Zustand zu erwerben, ein Abschluß enthalten,
der das Scheitern bzw. Fehlschlagen anzeigt.
-
13 zeigt
eine Tabelle 210, die Kohärenzaktivitäten als Reaktion auf verschiedene
Transaktionen auf dem SMP-Bus 20 darstellt. 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 entsprechende 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 übertragen
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
jedweden Knoten, der gemeinsam genutzte Kopien der Kohärenzeinheit
hält. Die
Kohärenzanfrage,
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. Überdies
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 gezeigt. 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 dargestellt.
-
Als
ein Beispiel stellt eine 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.
-
Man
beachte, 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 anhängig 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, beachte man ferner, daß durch
verschiedene Ausführungsformen
zusätzliche
Transaktionen des Computersystems 10 verwendet werden können.
-
Spin-Lock-Operationen
-
In 14 ist
ein Blockdiagramm einer Ausführungsform
des Heimatagenten 102 abgebildet. Der Heimatagent 102 beinhaltet
wie in 14 dargestellt eine (RTO)-Warteschlange
hoher Priorität 402,
eine Warteschlange niederer Priorität 404 und eine I/O-Warteschlange 406,
die so angeschlossen sind, daß sie
zugeordnete Transaktionsanforderungen vom Netzwerk 14 durch
die Eingabe-Header-Warteschlange 84 (3)
empfangen. Eine Transaktionsblockiereinheit 408 ist zwischen
die Warteschlange hoher und niederer Priorität 402 und 404 und
eine Heimatagentensteuerungseinheit 410 geschaltet abgebildet.
Ein Verzeichniscachespeicher 420 und eine zugeordnete Verwaltungseinheit 422 des
Verzeichniscachespeichers, die gemeinsam verwendet werden, um das
Verzeichnis 66 (3) zu implementieren, sind ebenso
an die Heimatagentensteuerungseinheit 410 angeschlossen
abgebildet.
-
Wie
zuvor festgestellt, empfängt
der Heimatagent 102 während
des Betriebs Transaktionsanforderungen vom Netzwerk 14 durch
die Eingabe-Header-Warteschlange 84. Jede Transaktionsanforderung
wird dann der Reihe nach entweder an die Warteschlange hoher Priorität 402,
die Warteschlange niederer Priorität 404 oder die I/O-Warteschlange 406 übermittelt,
abhängig
von der Art der Anforderung. Für
die Ausführungsform von 14 empfängt die
Warteschlange hoher Priorität 402 RTO-Transaktionsanforderungen
und die I/O-Warteschlange 406 empfängt I/O-Transaktionsanforderungen. Die Warteschlange
niederer Priorität 404 empfängt alle
anderen Anforderungsarten, einschließlich RTS-Transaktionsanforderungen.
Die Warteschlange hoher Priorität 402,
die Warteschlange niederer Priorität 404 und die I/O-Warteschlange 406 können jeweils mittels
FIFO-Puffereinheiten implementiert werden. Steuerungsschaltungen
(in 14 nicht getrennt dargestellt) werden eingesetzt,
um Transaktionsanforderungen zur richtigen Warteschlange zu leiten.
-
Die
Heimatagentensteuerungseinheit 410 bedient Transaktionsanforderungen,
indem sie passende Kohärenzanfragen
und -antworten in einer Art, wie es zuvor in Verbindung mit den
oben stehenden Erläuterungen
der 3 und 4 beschrieben wurde, erzeugt.
Die Heimatagentensteuerungseinheit 410 empfängt auch
Kohärenzabschlüsse von
den Anforderungsagenten und dient als Puffer für Bustransaktionen, die auf dem
SMP-Bus 58 durch die SMP-Ausgangswarteschlange 98 zu übermitteln
sind. Die Heimatagentensteuerungseinheit 410 hält schließlich den
Zustand für
alle Anforderungen, die aktuell bei der Heimatagentensteuerungseinheit 410 aktiv
sind.
-
Die
Heimatagentensteuerungseinheit 410 kann darauf eingerichtet
werden, gleichzeitig mehrere Transaktionsanforderungen zu bedienen.
Mit anderen Worten kann die Heimatagentensteuerungseinheit 410 das
Bedienen einer gegebenen Transaktionsanforderung einleiten, bevor
Abschlüsse,
die anderen Transaktionsanforderungen entsprechen, empfangen wurden.
Somit können
mehrere Transaktionsanforderungen zu jedem gegebenen Zeitpunkt aktiv
sein. Nach einer spezifischen Implementierung kann die Heimatagentensteuerungseinheit 410 bis
zu sechzehn aktive Anforderungen verarbeiten.
-
Die
Transaktionsblockiereinheit 408 ist darauf eingerichtet,
das Bedienen einer gegebenen Transaktionsanforderung innerhalb der
Warteschlange hoher Priorität 402 oder
der Warteschlange niederer Priorität 404 zu blockieren,
wenn sie einer Kohärenzeinheit
einer anderen Transaktionsanforderung entspricht, die bereits innerhalb
der Heimatagentensteuerungseinheit 410 aktiv ist. Wenn
ein Abschluß für die aktive
Anforderung empfangen wird, wird die Blockierung aufgehoben. Nach
einer Implementierung können
Transaktionen von der anderen Warteschlange immer noch durch die
Blockiereinheit 408 an die Heimatagentensteuerungseinheit 410 übergeben
werden, wenn eine Transaktionsanforderung, die als nächstes an
der Reihe ist, entweder in der Warteschlange hoher Priorität 402 oder
der Warteschlange niederer Priorität 404 blockiert wird.
-
Nach
einer spezifischen Implementierung kann die Transaktionsblockiereinheit 408 so
eingerichtet werden, daß ausstehende
RTSN-(Read-To-Share-NUMA-Modus)-Transaktionen keine neuen RTSN-Transaktionsanforderungen
blockieren, auch wenn ihre Zeilen- bzw. Blockadressen (d. h. Kohärenzeinheitsadressen) identisch
sind. Dies kann Verzögerungen,
die mit Barrierensynchronisation verbunden sind, vorteilhafterweise reduzieren.
-
Die
Heimatagentensteuerungseinheit 410 kann zusätzlich so
eingerichtet werden, daß dann,
wenn eine oder mehrere Transaktionsanforderungen innerhalb der Warteschlange
hoher Priorität 402 anstehen
und auch eine oder mehrere Transaktionsanforderungen in der Warteschlange
niederer Priorität 404 anstehen,
die RTO-Transaktionsanforderung, die als nächstes innerhalb der Warteschlange
hoher Priorität 402 ansteht,
bedient wird, bevor die nächste
Transaktionsanforderung in der Reihe innerhalb der Warteschlange
niederer Priorität 404 bedient
wird. Nach dem Bedienen der RTO-Transaktionsanforderung innerhalb
der Warteschlange hoher Priorität 402 empfängt und
bedient die Heimatagentensteuerungseinheit 410 die nächste Transaktionsanforderung
in der Reihe innerhalb der Warteschlange niederer Prorität 404.
Die Heimatagentensteuerungseinheit 410 beginnt anschließend mit
der Bedienung einer anstehenden RTO-Anforderung innerhalb der Warteschlange
hoher Priorität 402 und
so weiter in einer Ping-Pong-Manier. In der I/O-Warteschlange 406 anstehende
I/O-Transaktionsanforderungen können
von der Heimatagentensteuerungseinheit 410 zu jedem Zeitpunkt
bedient werden, abhängig
von der Verfügbarkeit
einer Transaktionsbedienungsressource oder eines endlichen Automaten
(als ein Heimatagentendeskriptor bezeichnet) innerhalb der Heimatagentensteuerungseinheit 410.
-
Der
Betrieb des Heimatagenten 102 während Spin-Lock-Operationen
kann man am besten unter Bezugnahme auf die 15a und 15b und das folgende Beispiel verstehen. 15a stellt eine Situation dar, bei der eine RTO-Transaktion
(eindeutig bezeichnet als "RTO(1)") innerhalb der Warteschlange
hoher Priorität 402 ansteht
und einige RTS-Transaktionen, eindeutig bezeichnet als RTS(1)–RTS(7),
innerhalb der Warteschlange niederer Priorität 404 anstehen. Bei
diesem Beispiel wird angenommen, daß jede der RTS-Transaktionsanforderungen
RTS(1)–RTS(7)
Anforderungen von in einer Schleife wartenden bzw. umlaufenden Prozessoren
entspricht, von denen sich jeder um den Zugriff auf denselben gesperrten
Speicherbereich bemüht. Es
wird ferner angenommen, daß die
RTO-Transaktion RTO(1) eine nicht dazugehörige Transaktionsanforderung
ist.
-
Die
Heimatagentensteuerungseinheit 410 kann als erstes die
RTO-Transaktionsanforderung RTO(1) bedienen. Die Heimatagentensteuerungseinheit 410 kann
auch das Bedienen der RTS-Transaktionsanforderung
RTS(1) akzeptieren und beginnen, unter der Annahme, daß dieselbe
Kohärenzeinheit
nicht in die RTO(1)-Transaktion einbezogen ist (d. h. ansonsten
würde die
Anforderung RTS(1) von der Transaktionsblockiereinheit 408 blockiert).
Wenn das Sperrbit, das der RTS(1)-Anforderung zugeordnet ist, vor
dem Bedienen der RTS(1)-Transaktionsanforderung freigegeben wird,
erkennt der Prozessor, der RTS(1) ausgibt, die freie Sperre und
leitet eine unteilbare Prüf-und-Einstell-Operation
ein.
-
Beziehen
wir uns als nächstes
auf die 15b, in der eine mit RTO(2)
gekennzeichnete RTO-Transaktion abgebildet ist, die der unteilbaren
Prüf-und-Einstell-Operation
entspricht, die von dem Prozessor, der die freie Sperre entdeckt,
eingeleitet wird. Für
das in 15b dargestellte Beispiel wird
angenommen, daß RTS(2)
und RTS(3) bereits zum Bedienen durch die Heimatagentensteuerungseinheit 410 angenommen
wurden, bevor die Anforderung RTO(2) aus dem Netzwerk empfangen
wurde. Wenn die Transaktion für
die Anforderung RTS(3) abgeschlossen wird, wird die Anforderung
RTO(2) an die Heimatagentensteuerungseinheit 410 durch
die Transaktionsblockiereinheit 408 übergeben. Da RTO(2) die Anforderungen
RTS(4)–RTS(7) über die
Warteschlange hoher Priorität 402 überholt,
wird sie vor dem Bedienen von RTS(4)–RTS(7) bearbeitet. Dementsprechend
wird das Sperrbit für
den Speicherbereich gesetzt, und die Prozessoren, die RTS(4)–RTS(7)
ausgeben, werden keine freie Sperre erkennen und keine unteilbaren
Prüf-und-Einstell-Operationen einleiten.
Dies vermeidet somit das Erzeugen zusätzlicher RTO-Transaktionsanforderungen
und unnötiges
Wandern der Kohärenzeinheit,
in der die Sperre gespeichert ist.
-
Darüber hinaus
wird auch das Ungültig-Machen
von anderen Kopien der Kohärenzeinheit
vermieden. Da das Gesamtverkehrsaufkommen im Netzwerk reduziert
wird, kann die Gesamtleistung bzw. der Gesamtdurchsatz des Simultanverarbeitungssystems
verbessert werden.
-
Man
beachte, daß die
Warteschlange hoher Priorität 402 nach
einer Implementierung relativ klein sein kann im Vergleich zur Kapazität der Warteschlange
niederer Priorität 404.
Zum Beispiel kann die Warteschlange hoher Priorität 402 dafür eingereichtet
sein, bis zu acht anstehende RTO-Anforderungen
zu speichern. Die Warteschlange niederer Priorität 404 und die I/O-Warteschlange 406 können jede
von ihrer Größe so ausgelegt
sein, daß alle
möglichen
Anforderungen, die an den Heimatagenten gerichtet werden, hineinpassen
(d. h. (R × N),
wobei R die Anzahl von Anforderungsagentendeskriptoren und N die
Anzahl von Knoten ist).
-
Es
wird ferner in Betracht gezogen, daß der Heimatagent 102 in
einer Vielzahl von anderen spezifischen Implementierungen eingerichtet
werden kann. Zum Beispiel könnte
die Heimatagentensteuerungseinheit, anstatt physikalisch getrennte
Warteschlangen für
RTO-Transaktionsanforderungen
und RTS-Transaktionsanforderungen bereitzustellen, darauf eingerichtet
werden, innerhalb des Heimatagenten anstehende RTO-Transaktionsanforderungen
zu erkennen und das Bedienen bestimmter RTO-Transaktionsanforderungen über das
Bedienen bestimmter, früher
empfangener RTS-Transaktionsanforderungen zu priorisieren.
-
Obwohl
die SMP-Knoten 12 in den obenstehenden, beispielhaften
Ausführungsformen
beschrieben wurden, kann eine Ausführungsform des Computersystems 10 allgemein
gesprochen 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. Schließlich ist
eine "Warteschlange" im hier verwendeten
Sinne ein Speicherbereich oder ein Puffer, der mehrere Speicherstellen
oder Elemente enthält.
-
Zahlreiche
Abwandlungen und Änderungen
liegen für
Fachleute auf diesem Gebiet auf der Hand, sobald sie die obenstehende
Offenbarung vollständig
würdigen.
Die folgenden Ansprüche
sollen so interpretiert werden, daß sie alle solchen Abwandlungen
und Änderungen
umfassen.