-
Hintergrund der Erfindung
-
1.Technisches Gebiet
-
Diese Erfindung betrifft Kommunikationsschnittstellen
und insbesondere einen Verriegelungs-Umschalt-Befehl, um entweder
den Beginn oder das Ende eines Verriegelungszustands anzufordern.
-
2. Stand der Technik
-
In Computersystemen, insbesondere
mehrere Prozessoren enthaltene Computersysteme, die gleichzeitig
auf Speicher oder I/O (Eingang/Ausgang) Bereiche zugreifen können, wird
ein Mechanismus benötigt,
um sicher zu stellen, dass atomare Zugriffe auf den Speicher nicht
von anderen Geräten
des Systems unterbrochen werden. Zum Beispiel könnte ein erstes Gerät des Systems
eine Stelle in dem Speicher lesen wollen und dann einen neuen Wert
in dieselbe Stelle des Speichers schreiben, wie es der Fall war
einer Speicher basierten Variable ist. Irgendein Mechanismus wird
benötigt,
um das System zu "verriegeln", so dass ein zweites Gerät des Systems
nicht auch dieselbe Stelle des Speichers lesen und/oder überschreiben
kann bevor das erste Gerät des
Systems die Operationen an der Stelle des Speichers abgeschlossen
hat. Generell kann eine verriegelte Operation als eine Folge von
einem oder mehreren Lesetakten gefolgt von einem oder mehreren Schreibtakten
von einem bestimmten Gerät
aus zu einer bestimmten Stelle oder einem Bereich des Speichers
definiert werden. Kein anderes Gerät hat Zugriff auf zumindest
die bestimmte Stelle des Speichers während der Abfolge, welche die
verriegelte Operation aufweist.
-
Bei x86 Prozessoren ist die Funktionalität der Verriegelung
für gewisse
Befehle, welche einen LOCK Präfix
verwenden, vorgesehen. Gewisse andere Befehle geben implizit an,
dass Lesen und Schreiben des Speichers verriegelt wird. Es ist fest zu
halten, dass verriegelte Operationen auch Aktualisierungen der Seitentabellen
und auch Bestätigungstakte
für Interrupts
umfassen können.
Bei der x86 Hardware ist die Verriegelung traditionell durch einen
LOCK# Pin auf dem x86 Prozessor implementiert worden. Ein eine verriegelte
Operation ausführender
Prozessor macht den LOCK# Pin geltend während der Abfolge von Lesen
und Schreiben, welche die verriegelte Operation aufweist. Da x86
Prozessoren im Allgemeinen für
Computersysteme entworfen worden sind, in denen ein Zugriff des
Prozessors auf Speicher über
einen einzelnen geteilten Prozessorbus vorgesehen ist, kann die
Geltendmachung des LOCK# Pins verwendet werden, um die geteilten Ressourcen
des Busses dem verriegelnden Prozessor zuzuweisen. Da andere die
Ressource des Busses teilende Prozessoren bei dem Zugriff auf den
geteilten Bus blockiert werden während
der geteilte Bus verriegelt ist, können andere Prozessoren die
atomare Sequenz von Lesen und Schreiben nicht unterbrechen.
-
Unvorteilhafterweise leiden Systeme
mit geteiltem Bus unter mehreren Nachteilen. Zum Beispiel wird der
Bus typischerweise mit einer relativ niedrigen Frequenz betrieben,
weil mehrere Geräte
an den geteilten Bus angeschlossen sind. Die mehrfachen Anschlüsse stellen
eine hohe kapazitive Last dar für ein
Gerät,
das ein Signal auf den Bus treibt, und die mehrfachen Anschlusspunkte
ergeben ein relativ kompliziertes Modell der Übertragungsleitung für hohe Frequenzen.
Die niedrige Bandbreite ist ein Hindernis für den Anschluss zusätzlicher
Geräte
an den geteilten Bus, da die Leistungsfähigkeit durch die verfügbare Bandbreite
begrenzt werden kann.
-
Ein weiterer Nachteil des Systems
mit geteiltem Bus ist die fehlende Skalierbarkeit für eine größere Anzahl
von Geräten.
Wie oben erwähnt
ist der Betrag der Bandbreite fest (und kann abnehmen, wenn das
Hinzufügen
zusätzlicher
Geräte
die Betriebsfrequenz des Busses reduziert). Sobald die Anforderungen der
an den Bus angeschlossenen Geräte
(entweder direkt oder indirekt) an die Bandbreite die verfügbare Bandbreite
des Busses übersteigt, werden
Geräte
häufig
zum Stillstand gebracht, wenn sie versuchen auf den Bus zuzugreifen.
-
Da x86 Prozessoren weiterhin in der
Betriebsfrequenz und der gesamten Leistungsfähigkeit gestiegen sind, wird
das Modell des Computersystems mit geteiltem Computerbus eine Beschränkung der
Leistungsfähigkeit.
Ein Verfahren zur Bereitstellung einer Verriegelungsfunktionalität in einem
System mit nicht geteiltem Bus ist daher erwünscht.
-
Offenbarung
der Erfindung
-
Die oben beschriebenen Probleme werden zum
großen
Teil von einer Vorrichtung und einem Verfahren zur Verwendung eines
Umschalt-Befehls zum Setzen und Freigeben einer Verriegelung, das heißt einer
Verriegelungsumschaltung, gelöst.
In einem beispielhaften Computersystem sind einer oder mehrere Prozessoren
jeweils an eine Busbrücke über getrennte
Verbindungen mit hoher Geschwindigkeit angeschlossen, welche in
einem Ausführungsbeispiel
jeweils ein Paar von unidirektionalen Adressbussen mit jeweiligen
mit der Quelle synchronen Taktleitungen und einem bidirektionalem
Datenbus mit begleitenden mit der Quelle synchronen Taktleitungen
umfassen. Der Verriegelungs-Umschalt-Befehl wird benutzt, um sowohl
eine Verriegelungsanforderung als auch eine Freigabeanforderung
von einem Prozessor an einen Zusammenführungspunkt des Systems, zum
Beispiel die Busbrücke,
zu übertragen.
Der Zusammenführungspunkt des
Systems bestätigt,
wenn die Verriege- lung eingerichtet oder gelöst worden ist. Während die
Verriegelung aktiv ist, werden andere Prozessoren wenigstens daran
gehindert, auf die Speicherstellen zuzugreifen, für welche
die Verriegelung eingeleitet wurde. Verriegelungen werden also von
dem Zusammenführungspunkt
des Systems eingerichtet, der vorteilhafterweise eine Verriegelungsfunktionalität in einem
System mit nicht geteiltem Bus erlaubt. Die Verwendung des Verriegelungs-Umschalt-Befehls kann
auch vorteilhafterweise die Verwendung eines einzelnen Befehlscodepunkts
erlauben, was andere Punkte für
andere Benutzer verfügbar
lässt.
-
Allgemeiner gesehen wird ein Prozessor
betrachtet, aufweisend eine Dekodiereinheit, eine Lade/Speichereinheit
und eine System-Intertace-Steuerung. Die Dekodiereinheit ist zum
Erzeugen einer Verriegelungsanzeige in Reaktion auf die erste oder die
mehreren Anweisungen vorgesehen. Die Lade/Speichereinheit ist zum
Empfangen der Verriegelungsanzeige und der ersten oder der mehreren
Anweisungen von der Dekodiereinheit angeschlossen. Die Lade/Speichereinheit
ist zum Auswählen
der ersten oder der mehreren Anweisungen zur Ausführung und
zum Übertragen
einer ersten Anforderung für den
Verriegelungs-Umschalt-Befehl in Reaktion darauf vorgesehen. Die
System-Interface-Steuerung ist zwischen der Lade/Speichereinheit
und dem Bus angeschlossen. Die System-Interface-Steuerung ist zum
Empfangen der ersten Anforderung für den Verriegelungs-Umschalt-Befehl
von der Lade/Speichereinheit und zum Ausgeben des ersten Verriegelungs-Umschalt-Befehls
in Reaktion auf das Empfangen der Anforderung für den ersten Verriegelungs-Umschalt-Befehl
vorgesehen. Die Lade/Speichereinheit ist des weiteren zum Übertragen
einer zweiten Anforderung für
den Verriegelungs-Umschalt-Befehl
in Reaktion auf das Ausführen
der ersten oder der mehreren Anweisungen vorgesehen. Die System-Interface-Steuerung
ist des weiteren zum Empfangen der zweiten Anforderung für den Verriegelungs-Umschalt-Befehl
von der Lade/Speichereinheit und zum Ausgeben des zweiten Verriegelungs-Umschalt-Befehls
in Reaktion auf das Empfangen der Anforderung für den zweiten Verriegelungs-Umschalt-Befehl
vorgesehen.
-
Eine Brücke zum Koppeln eines oder
mehrerer Prozessoren in einem Computersystem wird ebenfalls betrachtet.
Allgemein gesagt weist die Brücke
einen ersten Eingangsanschluss, der zum Empfangen einer Vielzahl
von Befehlen von einem ersten des einen oder der mehreren Prozessoren
angeschlossen ist, eine erste Prozessorwarteschlange, die mit dem
ersten Eingangsanschluss verbunden ist, ein Verriegelungsregister,
das zum Speichern eines Verriege lungszustands vorgesehen ist, und
eine Steuerlogik auf, die mit der ersten Eingangswarteschlange und
dem Verriegelungsregister verbunden ist. Der erste Eingangsanschluss
ist zur Übertragung der
Vielzahl der Befehle von dem ersten des genannten einen oder der
mehreren Prozessoren an die erste Prozessorwarteschlange vorgesehen.
Die erste Prozessorwarteschlange ist zum Speichern der Vielzahl
der Befehle von dem ersten des einen oder der mehreren Prozessoren
vorgesehen. Die Vielzahl der Befehle von dem ersten des einen oder
der mehreren Prozessoren umfasst einen Verriegelungs-Umschalt-Befehl. Die Steuerlogik
ist zum Entfernen der Vielzahl der Befehle von dem ersten des einen
oder der mehreren Prozessoren aus der ersten Prozessorwarteschlange
vorgesehen. In Reaktion auf die Entfernung des Verriegelungs-Umschalt-Befehls
aus der ersten Prozessorwarteschlange ist die Steuerlogik vorgesehen,
den Verriegelungszustand zu überprüfen. Die
Steuerlogik ist des weiteren vorgesehen, den Verriegelungszustand
zu setzen, um eine Verriegelung für den ersten des einen oder
der mehreren Prozessoren anzuzeigen, falls der Verriegelungszustand
ein Fehlen einer Verriegelung anzeigt. Die Steuerlogik ist des weiteren
vorgesehen, den Verriegelungszustand zu setzen, um das Fehlen einer
Verriegelung anzuzeigen, falls der Verriegelungszustand eine Verriegelung
anzeigt.
-
Ein Computersystem wird ebenfalls
betrachtet. Allgemein gesagt, weist das Computersystem einen oder
mehrere Prozessoren und eine Brücke
auf, die mit dem einen oder den mehreren Prozessoren gekoppelt ist.
Die Brücke
ist zum Ausführen
von Befehlen vorgesehen, die von dem einen oder den mehreren Prozessoren
empfangen wurden. Jeder der einen oder der mehreren Prozessoren
ist zur Übertragung
eines Verriegelungs-Umschalt-Befehls an die Brücke konfiguriert, um anzufordern,
dass ein Verriegelungszustand zum Anzeigen einer Verriegelung gesetzt
wird. Die Brücke
ist vorgesehen, um den Verriegelungszustand zu überprüfen in Reaktion auf den Empfang
des Verriegelungs-Umschalt-Befehls von einem ersten des einen oder
der mehreren Prozessoren. Die Steuerlogik ist des weiteren vorgesehen,
den Verriegelungszustand zu setzen, um die Verriegelung für den ersten
des einen oder der mehreren Prozessoren anzuzeigen, falls der Verriegelungszustand ein
Fehlen einer Verriegelung anzeigt, und den Verriegelungszustand
zu setzen, um das Fehlen einer Verriegelung anzuzeigen, falls der
Verriegelungszustand die Verriegelung anzeigt.
-
Ein Verfahren zum Betreiben eines
Computersystems umfassend einen oder mehrere Prozessoren und ein
Systemgerät
wird ebenfalls betrachtet. Allgemeiner betrachtet weist das Verfahren
das Ausgeben eines ersten Verriegelungs-Umschalt-Befehls von einem
ersten Prozessor des einen oder der mehreren Prozessoren an das
Systemgerät
auf. Das Verfahren überprüft des weiteren
einen Hinweis auf einen Verriegelungszustand in dem Systemgerät in Reaktion
auf den ersten Verriegelungs-Umschalt-Befehl. Das Verfahren umfasst
des weiteren das Setzen des Verriegelungszustands zum Anzeigen einer
Verriegelung durch den ersten Prozessor in Reaktion auf das Überprüfen des
Hinweises auf einen Verriegelungszustand und das Feststellen, dass
der Verriegelungszustand ein Fehlen der Verriegelung anzeigt. Das
Verfahren setzt auch den Verriegelungszustand zum Anzeigen des Fehlens
der Verriegelung in Reaktion auf das Überprüfen des Hinweises auf einen
Verriegelungszustand und die Feststellung, dass der Verriegelungszustand
eine Verriegelung anzeigt.
-
Kurze Beschreibung der Zeichnungen
-
Weitere Ziele und Vorteile der Erfindung
werden offenbar werden mit dem Studium der folgenden detaillierten
Beschreibung und mit der Bezugnahme auf die begleitenden Zeichnungen.
Es zeigen:
-
1 ein
Blockdiagramm eines Ausführungsbeispiels
eines Computersystems, das zwei Prozessoren mit separaten Bussen
enthält,
welche die Prozessoren an die Brücke
anschließen;
-
2 ein
Blockdiagramm eines Ausführungsbeispiels
der Prozessoren und der Brücke
aus 1, das zur Verarbeitung
einer oder mehrerer verriegelter Transaktionen konfiguriert ist;
-
3 ein
Flussdiagramm eines Ausführungsbeispiels
von Wechselwirkungen zwischen dem Prozessor und der Brücke aus 2;
-
4 ein
Flussdiagramm eines Ausführungsbeispiels
eines Verfahrens zum Durchführen von
verriegelten Operationen in dem Computersystem aus 2;
-
5 ein
Flussdiagramm eines Ausführungsbeispiels
von Operationen der Brücke
aus 1;
-
6 ein
Diagramm eines Ausführungsbeispiels
eines Formats für
von dem Prozessor initiierte Befehle in dem Computersystem aus 1; und
-
7 ein
Diagramm eines Ausführungsbeispiels
eines Formats für
Befehle, welche von der Brücke
in dem Computersystem aus 1 verwendet werden,
um Speicherkohärenz
zu bewahren und um Daten zu bewegen.
-
Während
die Erfindung zahlreichen Modifikationen und alternativen Ausbildungen
unterworfen werden kann, werden beispielhaft bestimmte Ausführungsbeispiele
davon in den Figuren gezeigt und hier detailliert beschrieben werden.
Es sollte jedoch verstanden werden, dass die Zeichnungen und die
dazugehörige
detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf
die besondere offenbarte Form zu beschränken, sondern dass die Erfindung vielmehr
alle Modifikationen, Äquivalente
und Alternativen umfassen soll, die in den Umfang der angefügten Ansprüche fallen.
-
Wege zum Ausführen der
Erfindung
-
Es wird auf 1 Bezug genommen, in der ein Blockdiagramm
eines Ausführungsbeispiels
eines verallgemeinerten Computersystems gezeigt ist. Ein erster
Prozessor 110A und ein zweiter Prozessor 110B sind
jeweils mit einer Brücke 130 über getrennte
Prozessorbusse verbunden. Sowohl der erste Prozessor 110A als
auch der zweite Prozessor 110B sind vorzugsweise vorgesehen,
um Speicher- und I/O-Operationen unter Benutzung ihrer jeweiligen Prozessorbusse
durchzuführen.
In einem Ausführungsbeispiel
verwenden die Prozessoren 110A und 110B die Architektur
des x86 Befehlssatzes. Weitere Ausführungsbeispiele können jegliche
geeignete Befehlssatzarchitektur verwenden. Die Brücke 130 ist ferner
mit einem Speicher 140 verbunden. Der Speicher 140 ist
vorzugsweise zum Speichern von Daten und Anweisungen vorgesehen,
auf die sowohl von dem ersten Prozessor 110A als auch dem
zweiten Prozessor 110B und auch von anderen Geräten des Systems
zugegriffen werden können.
der Speicher 140 kann aus SDRAM (Synchroner dynamischer wahlfreier
Zugriffsspeicher), RDRAM (Rambus DRAM) [RDRAM und RAMBUS sind eingetragene Marken
von Rambus, Inc.], oder jeglichem anderen geeignetem Speichertyp
bestehen. Ein verbessertes Grafikanschlussgerät (AGP) 150 ist ferner
optional an die Brücke 130 angeschlossen.
Wie gezeigt ist auch ein Peripheriekomponentenverbindungs- (PCI) Bus 160 an
die Brücke 130 angeschlossen.
Eine Vielzahl von I/O Komponenten kann an den PCI Bus 160 angeschlossen
sein.
-
Es wird fest gehalten, dass in Ausführungsbeispielen
des Computersystems mit einem Legacy-Bus, wie zum Beispiel einem
Industriestandard-Architektur(ISA) Bus, die Brücke oft als eine Northbridge 130 bezeichnet
wird, wobei die Brücke (nicht
gezeigt) zwischen dem PCI Bus 160 und dem Legacy-Bus als
eine Southbridge bezeichnet wird. Es wird ferner fest gehalten,
dass in dem gezeigten Ausführungsbeispiel
die Brücke 130 der
Systemmaster für
das Computersystem ist. Während
das dargestellte Ausführungsbeispiel
zwei Pro zessoren 110A und 110B enthält, ist
zu bemerken, dass wie gewünscht eine
beliebige Anzahl Prozessoren 110 in dem Computersystem
enthalten sein kann.
-
In dem dargestellten Ausführungsbeispiel
arbeitet die Brücke 130 als
der Systemmaster, um die Kommunikation zwischen den Prozessoren 110A und 110B,
dem Speicher 140, dem AGP Gerät 150 und dem PCI
Bus, usw. zu koordinieren. Die Brücke 130 bewahrt die
Kohärenz
für die
Datenübertragungen
zwischen den Geräten
des Computersystems, indem der Prozessor 110A und/oder
der Prozessor 110B auf Speicherstellen sondiert wird, auf
die von dem anderen Prozessor 110A oder 110B,
dem AGP Gerät 150 oder
einem PCI Gerät
auf dem PCI Bus 160 zugegriffen werden.
-
Es wird nun auf 2 Bezug genommen, in der ein detaillierteres
Blockdiagramm eines Ausführungsbeispiels
von gewissen Komponenten des verallgemeinerten Computersystems aus 1 dargestellt ist. Verschiedene
Details des ersten Prozessors 110A, der Komponenten des
Prozessorbusses 126A und 128A und auch der Brücke 130 sind
dargestellt.
-
Wie gezeigt enthält der Prozessor 110A eine Dekodiereinheit 112,
die über
einen L/S Befehlsbus und eine Verriegelungssignalleitung mit einer
Lade/Speichereinheit 114 verbunden ist. Die Lade/Speichereinheit 114 ist über einen
Adress- und Datenbus und auch eine Verriegelungs-Umschalt-Anforderungsleitung
und eine Verriegelungs-Umschalt-Gewährungsleitung mit einer System-Interface-Steuerung 116 verbunden.
Die System-Interface-Steuerung 116 enthält einen Ressource-Zähler 118 (A-Zähler) und
einen Übergabe-Zähler 119 (C-Zähler). Der
erste Prozessor 110A und der zweite Prozessor 110B sind
jeweils über
getrennte Prozessorbusse mit der Brücke 130 verbunden.
Jeder Prozessorbus enthält
einen bidirektionalen Datenbus mit zugehörigen mit der Quelle synchronen Taktleitungen 126 und
unidirektionalen Adresseingangs- und Adressausgangsleitungen (ein
Adressbus), jede mit einer dazu gehörenden mit der Quelle synchronen
Taktleitung 128. Der Prozessorbus zwischen dem ersten Prozessor 110A und
der Brücke 130 enthält den Datenbus 126A und
den Adressbus 128A und ist mit der Brücke 130 durch mindestens
einen ersten Eingangsanschluss verbunden. Der Prozessorbus zwischen
dem zweiten Prozessor 110B und der Brücke 130 enthält den Datenbus 126B und den
Adressbus 128B und ist mit der Brücke 130 durch mindestens
einen zweiten Eingangsanschluss verbunden. Die Brücke 130 enthält eine
erste Prozessorwarteschlange 134A, die zum Speichern von Befehlen
des ersten Prozessors 110A vorgesehen ist, und eine zweite
Prozessorwarteschlange 134B, die zum Speichern von Befehlen
des zweiten Prozessors 110B vorgesehen ist. Der Speicher 140 ist
ebenfalls an die Brücke 130 angeschlossen.
-
Im Allgemeinen, wenn keine Verriegelung angezeigt
ist, arbeitet das Computersystem wie folgt: Die Dekodiereinheit 112 des
Prozessors 110A empfängt
und dekodiert Anweisungen. Die Dekodiereinheit 112 befördert Speicheroperationen
(Anweisungen, die Laden aus oder Speichern in den Speicher angeben)
an die Lade/Speichereinheit 114. Die Lade/Speichereinheit 114 kann
Speicheroperationen an einen internen Datencache (nicht gezeigt)
und die Speicheroperationen, welche einen Dienst des Systems brauchen,
an die System-Interface-Steuerung 116 weiter leiten. Die
System-Interface-Steuerung 116 leitet Operationen an ein
Gerät des
Systems, wie zum Beispiel eine Brücke 130, unter Benutzung
des Adressbusses 128A und des Datenbusses 126A weiter.
Genauer gesagt übermittelt
die System-Interface-Steuerung 116 die Adress- und Befehlsinformation
auf dem Adressausgangsteil des Adressbusses 128A. Die Brücke 130 signalisiert
auf dem Adresseingangsteil des Adressbusses 128A Bereitschaft
für die
entsprechende Übertragung
der Daten. Die entsprechenden Daten werden dann auf dem Datenbus 126A übermittelt.
-
Für
die meisten an die Brücke 130 gesendeten
Befehle zählt
die System-Interface-Steuerung 116 einen Ressourcen-Zähler 118 (A-Zähler) und
einen Übergabe-Zähler 119 (C-Zähler) hoch.
Eine Steuerlogik 136 in der Brücke 130 empfängt Befehle von
dem ersten Prozessor 110A und dem zweiten Prozessor 110B und
platziert die Befehle in entsprechenden Warteschlangen, der Pro zessor
A Warteschlange 134A und der Prozessor B Warteschlange 134B.
Die Steuerlogik 136 entfernt Befehle von der Prozessor
A Warteschlange 134A und der Prozessor B Warteschlange 134B in
einer Reihenfolge, die von einem vorbestimmten Protokoll vorgeschrieben
wird, wie zum Beispiel durch das Befolgen eines Jeder gegen jeden
oder eines zuletzt zugegriffenen Protokolls. Der Prozessor 110B arbeitet
auf ähnliche
Weise. Es ist festzuhalten, dass gewisse Befehle nicht von dem Ressourcen-Zähler 118 und/oder
dem Übergabe-Zähler 119 nach verfolgt
werden. Beispielhafte nicht nach verfolgte Befehle können gewisse Sondierungsantworten,
gewisse Pufferleerungen, keine Operation-Befehle (NOPs) und spezielle
Befehle zum Blockieren des Speichers sein.
-
In Reaktion auf das Frei machen eines
Eintrags in der Warteschlange, wie zum Beispiel durch das Entfernen
eines Befehls aus der Prozessor A Warteschlange 134A, sendet
die Steuerlogik 136 ein Bestätigungssignal an die System-Interface-Steuerung 116 des
entsprechenden Prozessors 110A. Die System-Interface-Steuerung 116 zählt den
Ressourcen-Zähler 118 in
Reaktion auf den Empfang des Bestätigungssignals von der Brücke 130 runter.
Sobald die als Systemmaster agierende Brücke 130 einen Zusammenführungspunkt
im Hinblick auf einen bestimmten Prozessorbefehl erreicht, sendet
die Steuerlogik 136 ein Übergabesignal an die geeignete
System-Interface-Steuerung 116. Die System-Interface-Steuerung 116 ist
konfiguriert, um den Übergabe-Zähler 119 in Reaktion
auf den Empfang des Übergabesignals
von der Brücke 130 runter
zu zählen.
Es ist zu bemerken, dass in einem bevorzugten Ausführungsbeispiel
der Prozessor 110 nicht ein Übergabesignal mit einem beliebigen
besonderen Prozessorbefehl verbindet. Die Brücke 130 gibt einfach
das Übergabesignal
zurück,
wenn ein beliebiger Prozessorbefehl den Zusammenführungspunkt
erreicht hat. Die Bestätigungs-
und Übergabesignale können Teil
eines Adresseingangsbefehls auf dem Adresseingangsteil des Adressbusses 128A sein.
-
In einem Ausführungsbeispiel sind die Prozessoren 110A und 110B konfiguriert,
um aufzuhören
neue Befehle an die Brücke 130 zu
senden, wenn der Wert des Ressourcen-Zählers 118 und/oder
des Übergabe-Zählers 119 einen
vor bestimmten Wert erreicht. Der Ressourcen-Zähler 118 kann jedem
Prozessor 110 erlauben, nach zu verfolgen, wie viele Befehle
an die Brücke
gesendet worden sind, die nicht von der Brücke 130 bestätigt worden
sind. Der Übergabe-Zähler 119 kann
jedem Prozessor 110 erlauben, die Anzahl der ausstehenden
an die Brücke
gesendeten Befehle zu begrenzen, die den Zusammenführungspunkt
noch nicht erreicht haben.
-
Es ist festzustellen, dass sich in
verschiedenen Ausführungsbeispielen
die Verwendung und die Interpretation des Ressourcen-Zählers 118 unterscheiden
kann. In einem Ausführungsbeispiel
führt eine
gemeinsame Prozessorwarteschlange 134 mit vier Einträgen zu zwei
größeren Warteschlangen, eine
zum Lesen und eine zum Schreiben. Das A-Bit wird von der Brücke 130 an
den Prozessor 110 zurück
gegeben, wenn die Zuordnung des Eintrags in der gemeinsamen Warteschlange
aufgehoben ist.
-
Allgemein gesagt sendet, wenn ein
erster Prozessor 110A von einem oder mehreren Prozessoren
atomare Zugriffe auf den Speicher 140 zu machen wünscht, der
erste Prozessor 110A einen ersten Verriegelungs-Umschalt-Befehl
an den Systemmaster, wie die Brücke 130.
Der erste Prozessor 110A sieht typischerweise davon ab,
noch weitere Befehle an die Brücke 130 zu
senden, bis der erste Verriegelungs-Umschalt-Befehl übergeben
worden ist und die Verriegelung angezeigt ist, obwohl gewisse Befehle
unter gewissen Umständen
hinter dem Verriegelungs-Umschalt-Befehl her geschickt werden können. Die
Brücke 130 arbeitet,
um Befehle aus der einen oder den mehreren Prozessorwarteschlangen 134 auszuwählen, bis
der erste Verriegelungs-Umschalt-Befehl
erreicht ist. Bei der Ausführung
des ersten Verriegelungs-Umschalt-Befehls
untersucht die Brücke 130 den
Verriegelungszustand in dem Verriegelungsregister 132,
initiiert die Verriegelung für
den ersten Prozessor 110A und benachrichtigt den ersten
Prozessor 110A nach der Übernahme des Verriegelungs-Umschalt-Befehls.
Die Brücke 130 ignoriert
Befehle von allen anderen Prozessoren während der Verriegelungszustand
eine Verriegelung für
den ersten Prozessor 110A anzeigt. Der erste Prozessor 110A übermittelt
die eine oder die mehreren Anweisungen, die eine Verriegelung angeben, zur
Ausführung
an die Brücke 130.
Der erste Prozessor 110A übermittelt nachfolgend auch
einen zweiten Verriegelungs-Umschalt-Befehl an die Brücke 130, um
den Verriegelungszustand auf entriegelt zu setzen. Nach Beendigung
der Anweisungen, welche die Verriegelung angeben, und Ausführung des
zweiten Verriegelungs-Umschalt-Befehls benachrichtigt die Brücke 130 den
ersten Prozessor 110A, dass der Verriegelungszustand wieder
auf entriegelt gesetzt worden ist. Die Brücke 130 kehrt dann
wieder dazu zurück,
nach einem vor bestimmten Protokoll Befehle aus allen der einen
oder den mehreren Prozessorwarteschlangen 134 auszuwählen.
-
In dem dargestellten System wird
ein mit der Quelle synchroner Takt in der selben Richtung wie die
dazu gehörigen
Daten übermittelt.
Es ist zu bemerken, dass "ein mit der Quelle synchroner Takt" auch
als "weitergeleiteter Takt" bezeichnet wird. Es ist auch festzuhalten,
dass obwohl in dem beispielhaften Ausführungsbeispiel mit der Quelle
synchrone Taktung verwendet wird, jeglicher Taktungsmechanismus
verwendet werden kann, der für
Computersysteme geeignet ist. Der Datenbus 126A und der Adressbus 128A sind
ebenfalls lediglich beispielhaft. Verschiedene Details betreffend
den Betrieb des in 2 gezeigten
Computersystems sind im Hinblick auf die folgenden Beschreibungen
der 3 – 5 gegeben.
-
Es wird nun auf 3 Bezug genommen, in der ein Ausführungsbeispiel
eines Flussdiagramms von Gesamtoperationen zum Durchführen von
verriegelten Operationen in einem Computersystem, wie dem in den 1 und 2 gezeigten Computersystem, dargestellt
ist. Während
die in 3 gezeigte Operation
in Form eines Flussdiagramms gezeigt ist, ist fest zu halten, dass
verschiedene Operationen aus 3 in
abweichender Reihenfolge oder auch gar nicht auftreten können.
-
Wenn keine Verriegelungen ausstehen
gibt ein erster Prozessor 110A von einem oder mehreren Prozessoren
einen Verriegelungs-Umschalt-Befehl an die Brücke 130 aus, um eine
Verriegelung einzuleiten. Der Prozessor 110A zählt auch
den Ressourcen-Zähler 118 und
den Übergabe-Zähler 119 hoch (Schritt
410) und sieht im Allgemeinen davon ab, andere Befehle auszugeben,
obwohl manche Ausführungsbeispiele
vorziehen könnten,
spekulative Befehle einzuleiten. Die Brücke 130 puffert den
Verriegelungs-Umschalt-Befehl in der passenden Prozessorwarteschlange 134 (Schritt
415). Die Brücke
führt von
der einen oder den mehreren Prozessorwarteschlangen 134 angeforderte
Operationen durch, bis der Verriegelungs-Umschalt-Befehl erreicht
ist (Schritt 420). Ähnlich
wie bei den meisten anderen Operationen sendet die Brücke 130 ein
Bestätigungssignal
(zum Beispiel ein A-Bit) an den passenden Prozessor 110A,
wenn der Verriegelungs-Umschalt-Befehl von der Prozessorwarteschlange 134A entfernt
wird (Schritt 425). Der Prozessor 110A empfängt das
A-Bit und zählt
den Ressourcen-Zähler 118 runter
(Schritt 430).
-
Die Brücke 130 bearbeitet
den Verriegelungs-Umschalt-Befehl (Schritt 435), zum Beispiel wie
folgend in 5 beschrieben.
Die Brücke 130 sendet
ein Übergabesignal
(zum Beispiel ein C-Bit) an den Prozessor 110A, wenn die
Verriegelung hergestellt ist (Schritt 440). Der Prozessor 110A empfängt das
C-Bit und zählt
den Übergabe-Zähler 119 runter
(Schritt 445). Sobald der Übergabe-Zähler 119 Null
erreicht, wird der Prozessor 110A informiert, dass die
Verriegelung hergestellt ist. Nachfolgend sendet der Prozessor 110A einen
oder mehrere Befehle an die Brücke 130,
die auszuführen
sind während
die Verriegelung aktiv ist, welche von einem zweiten Verriegelungs-Umschalt-Befehl
gefolgt werden (Schritt 450). Die Brücke 130 bearbeitet
den einen oder die mehreren Befehle mit aktivierter Verriegelung
(Schritt 455). Die Brücke 130 bearbeitet
dann den zweiten Verriegelungs-Umschalt-Befehl, um die Verriegelung
aufzuheben (Schritt 460). Der zweite Verriegelungs-Umschalt-Befehl
wird auf ähnliche Weise
wie der erste Verriegelungs-Umschalt-Befehl bearbeitet.
-
Es wird nun auf 4 Bezug genommen, in der ein Ausführungsbeispiel
eines Flussdiagramms der Operationen eines ersten Prozessors 110A von den
Prozessoren 110A und 110B aus 2 zusammenarbeitend mit der Brücke 130 zum
Durchführen von
verriegelten Operationen detailliert dargestellt ist. Die in 4 gezeigten Operationen
sind lediglich beispielhaft und enthalten nicht zusätzliche
Merkmale oder Operationen des Prozessors 110 oder der Brücke 130,
welche nicht Teil des dargestellten Operationsablaufs sind. Während die
in 4 gezeigten Operationen
in Form eines Flussdiagramms gezeigt sind, ist zu bemerken, dass
verschiedene Operationen aus 4 in
abweichender Reihenfolge oder auch gar nicht auftreten können.
-
Die Dekodiereinheit 112 dekodiert
und identifiziert eine oder mehrere Anweisungen, die eine Verriegelung
angeben (Schritt 310). Danach informiert die Dekodiereinheit 112 die
Lade/Speichereinheit 114 von der einen oder den mehreren Operationen,
die eine Verriegelung angeben (Schritt 315). Genauer gesagt übermittelt
die Dekodiereinheit 112 die eine oder mehreren Operationen
an die Lade/Speichereinheit 114 und gibt das Verriegelungssignal aus.
Die Lade/Speichereinheit 114 puffert die Speicheroperationen
und die entsprechende Anforderung nach einer Verriegelung (Schritt
320). Wenn die Anforderung nach einer Verriegelung die älteste ausstehende
Operation ist, macht die Lade/Speichereinheit 114 eine
Verriegelungs-Umschalt-Anforderung an die System-Interface-Steuerung 116 (Schritt
325).
-
Die System-Interface-Steuerung 116 gibt
einen ersten Verriegelungs-Umschalt-Befehl an die Brücke 130 für eine Verriegelung
aus (Schritt 330). Die System-Interface-Steuerung 116 wartet
bis die Brücke 130 den
ersten Verriegelungs-Umschalt-Befehl ausführt (Schritt 335), das heißt bis der Übergabe-Zähler 119 bis auf Null
runter gezählt
ist. Die System-Interface-Steuerung 116 gibt das Verriegelungs-Umschalt-Gewährungssignal
an die Lade/Speichereinheit 114 zurück (Schritt 340), nachfolgend
zu der Übernahme
des ersten Verriegelungs-Umschalt-Befehls durch die Brücke 130.
-
Die Lade/Speichereinheit 114 führt die
eine oder die mehreren Operationen, die die Verriegelung angeben,
durch (Schritt 345), in Reaktion auf den Empfang des Verriegelungs-Umschalt-Gewährungssignals
von der System-Interface-Steuerung 116. Die Lade/Speichereinheit 114 sendet
eine zweite Verriegelungsanforderung an die System-Interface-Steuerung 116,
um die Verriegelung aufzuheben (Schritt 350). Die System-Interface-Steuerung 116 gibt
einen zweiten Verriegelungs-Umschalt-Befehl für ein Entriegeln an die Brücke 130 aus
(Schritt 355). Die System-Interface-Steuerung 116 kann
einen zweiten Verriegelungs-Umschalt-Befehl für ein Entriegeln an die Brücke 130 ausgeben,
in Reaktion auf den Empfang der zweiten Verriegelungsanforderung
(zum Entriegeln) von der Lade/Speichereinheit 114. Die System-Interface-Steuerung 116 wartet
bis die Brücke 130 den
Verriegelungs-Umschalt-Befehl
für ein Entriegeln
(Schritt 360) ausführt
und gibt dann das Verriegelungs-Umschalt-Gewährungssignal zurück.
-
5 stellt
ein Ausführungsbeispiel
eines Flussdiagramms hoher Stufe der Operationen der Brücke 130 dar,
wobei die Steuerlogik 136 Befehle von den verschiedenen
Prozessorwarteschlangen 134 entfernt. Während die in 5 gezeigten Operationen in Form eines
Flussdiagramms dargestellt sind, ist zu bemerken, dass verschiedene
Operationen aus 5 in
abweichender Reihenfolge oder auch gar nicht auftreten können.
-
Die Steuerlogik 136 prüft zuerst,
um zu sehen, ob es ausstehende Verriege-lungen gibt (Entscheidungsblock 510).
Ausstehende Verriegelungen können
wie gewünscht
durch einen Verriegelungszustand in dem Verriegelungsregister 132 oder
durch andere Mittel zum Anzeigen eines Verriegelungszustands angezeigt
werden. Genauer gesagt kann der Verriegelungszustand in dem Verriegelungsregister 132 keine
Verriegelung, eine Verriegelung für den Prozessor 110A oder
eine Verriegelung für
den Prozessor 110B anzeigen. Weitere Kodierungen des Verriegelungszustands
könnten
wie gewünscht
Verriegelungen für
eine beliebige Anzahl von Prozessoren 110 identifizieren.
Falls eine ausstehende Verriegelung vorhanden ist wählt dann
die Steuerlogik 136 Befehle nur von der Prozessorwarteschlange,
welche die Verriegelung ausgegeben hat (Schritt 515). Die Steuerlogik 136 untersucht
den Befehl, um zu sehen, ob es ein Verriegelungs-Umschalt-Befehl
ist (Entscheidungsblock 520). Wenn der Befehl ein Verriegelungs-Umschalt-Befehl
ist, setzt die Steuerlogik 136 dann die ausstehende Verriegelung
zurück (Schritt
525). Die Steuerlogik 136 setzt den Verriegelungszustand
auf nicht verriegelt, falls eine existierende Verriegelung da ist
und ein Verriegelungs-Umschalt-Befehl ausgeführt wird. Die Steuerlogik 136 ist nun
betriebsfähig,
um mit normalen Befehlen von der Brücke 130 fortzufahren.
-
Falls der Befehl beim Entscheidungsblock 520 kein
Verriegelungs-Umschalt-Befehl
ist, bearbeitet die Brücke 130 dann
den ausgewählten
Befehl (Schritt 530), wobei die Verriegelung fort dauert.
-
Wenn beim Entscheidungsblock 510 keine ausstehenden
Verriegelungen da sind, wählt
die Steuerlogik 136 dann einen geeigneten Befehl von einer
beliebigen Prozessorwarteschlange 134 aus (Schritt 535).
Das Protokoll zum Bestimmen, welche Befehle und von welcher Warteschlange 134 sind kann
wie gewünscht
jedes passende Protokoll sein. Die Steuerlogik 136 überprüft im Entscheidungsblock 540,
um zu sehen, ob der Befehl ein Verriegelungs-Umschalt-Befehl ist. Wenn der Befehl
ein Verriegelungs-Umschalt-Befehl ist setzt die Steuerlogik eine
Verriegelung (Schritt 545), indem der Verriegelungszustand des Verriegelungsregisters 132 gesetzt wird,
um eine Verriege-lung
für den
entsprechenden Prozessor 110 anzuzeigen.
-
Wenn der Befehl im Entscheidungsblock 540 kein
Verriegelungs-Umschalt-Befehl ist, dann verarbeitet die Steuerlogik 136 einfach
den ausgewählten Befehl
(Schritt 530).
-
Es wird nun auf 6 Bezug genommen, in der ein Blockdiagramm
eines Ausführungsbeispiels von
einem Format für
von einem Prozessor initiierte Befeh- le, hier als das SysAddOut-Befehlsformat
bezeichnet, in dem Computersystem aus 1 dargestellt
ist. In einem bevorzugten Ausführungsbeispiel wird
das SysAddOut-Befehlsformat verwendet, wenn ein Prozessor 110 Befehle
zum Lesen, Schreiben, Sondierungsantworten mit keiner Datenbewegung und
Nachrichten bezüglich
eines Übergangs
des Zustands des Cacheblocks und auch dem Verriegelungs-Umschalt-Befehl
an das System 130 ausgibt. Das SysAddOut-Befehlsformat
wird vorzugsweise über
die Leitungen [14:2]# der Adressausgangsleitungen des Prozessordatenbusses 128 geschickt.
-
Wie gezeigt enthält das SysAddOut-Befehlsformat
vier Bit-Zeiten, die über
zwei komplette weitergeleitete Takte in einem Ausführungsbeispiel
sowohl auf der ansteigenden als auch auf der abfallenden Flanke
des weitergeleiteten Taktsignals getaktet sind. Verschiedene Bits
der physikalischen Adresse, in 6 als
ADDRESS bezeichnet, sind über
die vier Bit-Zeit-Takte verteilt. Weitere Befehlsfelder umfassen
das M1 Bit, das COMMAND[4:0] Feld, das M2 Bit, das MASK[7:0] Feld,
das CH Feld, das ID[2:0] Feld und das RV Bit.
-
Wie gezeigt enthält die Bitzeit 0 das M1 Bit, das
COMMAND[4:0] Feld und einen Bereich der ADDRESS. Das M1 Bit ist
die frühe
Sondierungsfehler-Anzeige. Wenn M1 auf [1] gesetzt ist, führt die älteste von
diesem Prozessor 110 empfangende Sondierung zu einem Fehltreffer.
M1 wird ausgegeben, wenn eine Sondierung in der Bit-Zeit 0 ein Ergebnis erreicht.
Das COMMAND[4:0] Feld wird verwendet, um die Befehlskodierung des
Prozessors 110 dem System 130 anzuzeigen. Die
verschiedenen Kodierungen des COMMAND[4:0] Felds identifizieren
Lesen, Schreiben, Sondierungsantworten, usw. Eine bestimmte Kodierung
zeigt den Verriegelungs-Umschalt-Befehl an.
-
Wie gezeigt enthält die Bit-Zeit 1 einen weiteren
Teil der ADDRESS.
-
Wie gezeigt enthält die Bit-Zeit 2 das M2 Bit, das
MASK[7:0] Feld, das CH-Feld
und das ID[2:0] Feld. Das M2 Bit ist die späte Sondierungsfehler-Anzeige
oder die Cachetreffer-Bestätigung.
Wenn M2 auf [1] gesetzt ist, führte
die älteste
von diesem Prozessor 110 empfangende Sondierung zu einem
Fehltreffer. M2 wird ausgegeben, wenn eine Sondierung nach der Bit-Zeit
0 und vor der Bit-Zeit 2 bestimmt wurde. M2 kann auch das CH Bit
bestätigen,
das einen Sondierungstreffer, aber keine Datenbewegung anzeigt.
Das MASK[7:0] Feld ist die Datentransfermaskierung. Das MASK[7:0]
Feld wird für
alle Sub-Cacheblock-Befehle
(Byte, LW QW) verwendet und zeigt an, welche Bytes (zum Beispiel
8 Bits), langen Wörter
(zum Beispiel 16 Bit) oder Quadwörter (zum
Beispiel 32 Bit) des Datenbusses 128 für den angeforderten Datentransfer
gültig
sind. Das CH Bit ist das Cachetreffer-Bit. Das Cachetreffer-Bit
wird gesetzt [zum Beispiel 1], wenn die älteste ausstehende Sondierung
zu einem Prozessorcachetreffer führte, bei
dem kein Datentransfer in dem System 130 erforderlich ist.
Das M2 Bit ist gesetzt wenn das Cachetreffer-Bit gesetzt ist. Das
ID[2:0] Feld ist das Pufferidentifikationsfeld. Das ID[2:0] Feld
gibt den Eintrag des Fehltreffer-Adresspuffers (MAB), des Opfer-Datenpuffers
(VDB) oder des Schreib-Datenpuffers (WDB) an, der dem Befehl in
dem COM-MAND[4:0] Feld
entspricht. Das ID[2:0] Feld bildet den WDB oder den VDB, abhängig von
dem Befehl, ab.
-
Wie gezeigt enthält die Bitzeit 3 das RV Bit und
einen weiteren Teil der ADDRESS. Das RV Bit ist das Lese-Gültig-Bit,
das spekulative Befehle in dem COMMAND[4:0] Feld gültig macht.
-
Es wird nun auf 7 Bezug genommen, in der ein Blockdiagramm
eines Ausführungsbeispiels von
einem Format für
von dem System initiierte Befehle zur Aufrechterhaltung der Speicherkohärenz und
zum Bewegen von Daten, hier als das SysAddIn-Befehlsformat bezeichnet,
in dem Computersystem aus 1 dargestellt
ist. In einem bevorzugten Ausführungsbeispiel
wird das SysAddIn-Befehlsformat verwendet, wenn die Brücke 130 Befehle
an einen Prozessor 110 ausgibt, die Cachespeicher der Prozessoren 110 zu
sondieren oder einen Datentransfer von oder zu den Prozessoren 110 zu
initiieren. Das SysAddIn-Befehlsformat wird vorzugsweise über Leitungen
[14:2]# der Adresseingangsleitungen des Prozessoradressbusses 128 geschickt.
-
Wie gezeigt enthält das SysAddIn-Befehlsformat
vier Bit-Zeiten, die über
zwei komplette weitergeleitete Takte in einem Ausführungsbeispiel
sowohl auf der ansteigenden als auch auf der abfallenden Flanke
des weitergeleiteten Taktsignals getaktet sind. Die physikalische
Adresse, in 7 als ADDRESS
bezeichnet, ist über
die vier Bit-Zeit-Takte verteilt. Weitere Befehlsfelder umfassen
das Sondierungstyp PROBE[4:0] Feld, das Systemdatenbefehls SYSDC[4:0]
Feld, das Freigabe-Opfer-Puffer RVB Bit, das Freigabe-Proben-Puffer RPB Bit, das
Bestätigungs-A-Bit,
das Pufferidentifikationsnummer ID[3:0] Feld und das Übergabe
C-Bit.
-
Das Sondierungstyp PROBE[4:0] Feld
zeigt die Bedingung an, bei der der Prozessor 110 Daten an
die Brücke 130 zurück geben
sollte und falls die Sondierung zu einem Cacheblock-Treffer führt, den Cachezustand,
in welchen der Prozessor 110 den Cacheblock ändern muss.
Das Systemdatenbefehls SYSDC[4:0] Feld steuert Datentransfers zu
und von Prozessor. Verschiedene Kodierungen des Sondierungstyp PROBE[4:0]
Felds und des Systemdatenbefehls SYSDC[4:0] Felds werden betrachtet.
Das RVB Bit signalisiert, wenn ausgegeben, dem Prozessor 110,
den VDB oder WDB Eintrag freizugeben, der dem ID[3:0] Feld entspricht.
Das RPB Bit signalisiert, wenn ausgegeben, dem Prozessor 110,
die Sondierungsdateneinträge
freizugeben, die dem ID[2:0] Feld entsprechen.
-
Das Bestätigungsbit bestätigt einen
von dem Prozessor ausgegebenen Befehl. Der Prozessor zählt dann
den Ressourcen-Zähler
runter. Das Pufferidentifikationsnummerfeld identifiziert die Puffer
ID, die zu den RVB und RPB Bits gehören, für Schreib- und Pufferfreigabebefehle.
ID[3] wird gesetzt, um einen WDB Eintrag anzuzeigen, während das
zurück gesetzte
ID[3] einen VDB Eintrag anzeigt. Das Übergabebit wird von dem System 130 ausgegeben,
um anzuzeigen, wann ein von dem Prozessor erzeugter Befehl den Zusammenführungspunkt
erreicht hat.
-
In einem bevorzugten Ausführungsbeispiel ist
der Prozessorbus 126A und 128A kompatibel mit einer
Version des EV6 Busses von Digital Equipment Corp. aus Maynard,
Mass. Der EV6 Bus wurde für den
ALPHA Prozessor entworfen, ebenfalls erhältlich von Digital Equipment
Corp. Der Verriegelungs-Umschalt-Befehl
verwendet vorzugsweise den MB Kodierungspunkt, um eine Verriegelung
oder eine Entriegelung anzufordern, wenn der Prozessor ein Prozessor 110 ist,
da die Speicherbarrieren-Transaktion nicht von den Prozessoren 110A und 110B ausgeführt wird.
Daher erlaubt der Verriegelungs-Umschalt-Befehl
dem Prozessor 110 den EV6 Bus zu benutzen und dennoch Kompatibilität mit dem
ALPHA Prozessor zu bewahren.
-
Zahlreiche Variationen und Modifikationen werden
dem Fachmann auf dem Gebiet offenbar werden, sobald die obige Offenbarung
voll gewürdigt ist.
Es ist beabsichtigt, dass die folgenden Ansprüche interpretiert werden, um
sämtliche
derartigen Variationen und Modifikationen zu umfassen.
-
Gewerbliche
Anwendbarkeit
-
Diese Erfindung kann generell in
Prozessoren und Computersystemen angewendet werden.