DE60002077T2 - Minimierung der verwendung von busbefehlcodezeichen zur anforderung des startens und des endes einer verriegelung - Google Patents

Minimierung der verwendung von busbefehlcodezeichen zur anforderung des startens und des endes einer verriegelung Download PDF

Info

Publication number
DE60002077T2
DE60002077T2 DE60002077T DE60002077T DE60002077T2 DE 60002077 T2 DE60002077 T2 DE 60002077T2 DE 60002077 T DE60002077 T DE 60002077T DE 60002077 T DE60002077 T DE 60002077T DE 60002077 T2 DE60002077 T2 DE 60002077T2
Authority
DE
Germany
Prior art keywords
lock
processor
command
processors
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60002077T
Other languages
English (en)
Other versions
DE60002077D1 (de
Inventor
R. Derrick MEYER
K. William LEWCHUK
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE60002077D1 publication Critical patent/DE60002077D1/de
Publication of DE60002077T2 publication Critical patent/DE60002077T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Description

  • 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 35 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.

Claims (11)

  1. Busverbindung (130) zum Koppeln mit einem oder mehreren Prozessoren (110A; 110B), wobei die Busverbindung (130) zum Empfangen eines Sperr-Umschalt-Befehls von einem der Prozessoren (110A; 110B) und in Reaktion darauf zum Setzen einer Sperrbedingung vorgesehen ist, die eine Sperrung für einen der Prozessoren (110A; 110B) anzeigt, wenn die Sperrbedingung das Fehlen einer Sperrung anzeigt, und zum Setzen einer Sperrbedingung, die das Fehlen der Sperrung anzeigt, wenn die Sperrbedingung eine Sperrung für den einen Prozessor (110A; 110B) anzeigt.
  2. Busverbindung nach Anspruch 1, mit: einem Sperrregister (132) zum Speichern der Sperrbedingung; und einer mit dem Sperrregister (132) gekoppelten Steuerlogik (136) zum Empfangen des Sperr-Umschalt-Befehls von dem einen Prozessor (110A; 110B), wobei die Steuerlogik (136) zum Setzen der Sperrbedingung in dem Sperrregister (132) vorgesehen ist, um eine Sperrung durch den einen Prozessor (110A; 110B) in Reaktion auf den Sperr-Umschalt-Befehl anzuzeigen, und Feststellen, dass eine Sperrbedingung das Fehlen der Sperrung anzeigt, und wobei die Steuerlogik zum Setzen einer Sperrbedingung vorgesehen ist, um das Fehlen der Sperrung in Reaktion auf den Sperr-Umschalt-Befehl anzuzeigen, und Feststellen, dass die Sperrbedingung eine Sperrung durch den einen Prozessor (110A; 110B) anzeigt.
  3. Computersystem mit: einem oder mehreren Prozessoren (110A; 110B); und einer Busverbindung (130) nach Anspruch 1 oder 2, die mit dem einen oder den mehreren Prozessoren (110A; 110B) gekoppelt ist; wobei ein erster des einen oder der mehreren Prozessoren (110A; 110B) zum Übermitteln eines Sperr-Umschalt-Befehls an die Busverbindung (130) und die Busverbindung (130) zum Empfangen des Sperr-Umschalt-Befehls vorgesehen ist.
  4. Computersystem nach Anspruch 3, bei dem die Busverbindung (130) ferner zum Ausführen ausschließlich von Befehlen von dem ersten des einen oder der mehreren Prozessoren (110A; 110B) vorgesehen ist, während die Sperrbedingung die Sperrung für den ersten des einen oder der mehreren Prozessoren (110A; 110B) anzeigt.
  5. Computersystem nach Anspruch 3 oder 4, bei dem die Busverbindung (130) ein Sperrregister (132) zum Speichern der Sperrbedingung aufweist.
  6. Computersystem nach Anspruch 3, 4 oder 5, bei dem jeder des einen oder der mehreren Prozessoren (110A; 110B) aufweist: eine Dekodiereinheit (112) zum Empfangen und Dekodieren einer ersten oder mehrerer Anweisungen, die die Sperrung spezifizieren, wobei die Dekodiereinheit (112) zum Erzeugen einer Sperranzeige in Reaktion auf die erste oder die mehreren Anweisungen vorgesehen ist; eine Lade-/Speichereinheit (114) zum Empfangen der Sperranzeige und der ersten oder der mehreren Anweisungen von der Dekodiereinheit (112), wobei die Lade-/Speichereinheit (114) zum Auswählen der ersten oder der mehreren Anweisungen zu Ausführungszwecken und zum Übermitteln einer ersten Anforderung nach dem Sperr-Umschalt-Befehl in Reaktion auf das Auswählen vorgesehen ist; und einen zwischen der Lade-/Speichereinheit (114) und einem Bus (126A; 128A) gekoppelten System-Interface-Kontroller (116), der zum Empfangen der ersten Anforderung nach dem Sperr-Umschalt-Befehl von der Lade-/Speichereinheit (114) und ferner zum Ausgeben des ersten Sperr-Umschalt-Befehls in Reaktion auf das Empfangen der Anforderung nach dem ersten Sperr-Umschalt-Befehl vorgesehen ist; wobei die Lade-/Speichereinheit (114) ferner zum Übermitteln einer zweiten Anforderung nach dem Sperr-Umschalt-Befehl in Reaktion auf das Ausführen der ersten oder der mehreren Anweisungen vorgesehen ist; und wobei der System-Interface-Kontroller (116) ferner zum Empfangen der zweiten Anforderung nach dem Sperr-Umschalt-Befehl von der Lade-/Speichereinheit und zum Ausgeben des zweiten Sperr-Umschalt-Befehls in Reaktion auf das Empfangen der zweiten Anforderung nach dem Sperr-Umschalt-Befehl vorgesehen ist.
  7. Computersystem nach Anspruch 6, bei dem die Lade-/Speichereinheit (114) ferner zum Puffern der ersten Anforderung nach dem Sperr-Umschalt-Befehl vorgesehen ist, bis die erste Anforderung nach dem Sperr-Umschalt-Befehl die älteste noch ausstehende Operation ist; und wobei der System-Interface-Kontroller (116) ferner zum Benachrichtigen der Lade-/Speichereinheit (114) darüber, dass der erste Sperr-Umschalt-Befehl ausgeführt worden ist, vorgesehen ist.
  8. Verfahren zum Betreiben eines Computersystems mit einem oder mehreren Prozessoren (110A; 110B) und einer Busverbindung (130), mit folgenden Schritten: Ausgeben eines ersten Sperr-Umschalt-Befehls von einem ersten Prozessor (110A) des einen oder der mehreren Prozessoren (110A; 110B) an die Busverbindung (130); Setzen einer Sperrbedingung zum Anzeigen einer Sperrung durch den ersten Prozessor (110A) in Reaktion auf den ersten Sperr-Umschalt-Befehl und Feststellen, dass die Sperrbedingung das Fehlen der Sperrung anzeigt; und Setzen der Sperrbedingung zum Anzeigen des Fehlens der Sperrung in Reaktion auf den ersten Sperr-Umschalt-Befehl und Feststellen, dass die Sperrbedingung eine Sperrung durch den ersten Prozessor (110A) anzeigt.
  9. Verfahren nach Anspruch 8, ferner mit folgendem Schritt: Blockieren des Verarbeitens von Befehlen von einem zweiten Prozessor (110B) des einen oder der mehreren Prozessoren (110A; 110B), wobei die Sperrbedingung die Sperrung für den ersten Prozessor anzeigt.
  10. Verfahren nach Anspruch 8 oder 9, ferner mit folgenden Schritten: Senden des einen oder der mehreren die Sperrung spezifizierenden Befehle von dem ersten Prozessor (110A) zu der Busverbindung (130) in Reaktion auf das Setzen der Sperrbedingung zum Anzeigen der Sperrung; und Senden eines zweiten Sperr-Umschalt-Befehls von dem ersten Prozessor (110A) zu der Busverbindung (130) nach dem Senden des einen oder der mehreren die Sperrung spezifizierenden Befehle von dem ersten Prozessor (110A) zu der Busverbindung (130).
  11. Mikroprozessor zum Koppeln mit einer Busverbindung (130), mit: einer Lade-/Speichereinheit (114) zum Detektieren einer Anforderung nach einer Sperrung und einer Anforderung nach Freigabe der Sperrung, wobei die Lade-/Speichereinheit (114) zum Erzeugen einer Sperr-Umschalt-Anforderung in Reaktion auf entweder die Anforderung nach der Sperrung oder die Anforderung nach Freigabe der Sperrung vorgesehen ist; und einem mit der Lade-/Speichereinheit (114) gekoppelten System-Interface-Kontroller (116), der zum Übermitteln eines Sperr-Umschalt-Befehls an die Busverbindung (130) in Reaktion auf die Sperr-Umschalt-Anforderung vorgesehen ist.
DE60002077T 1999-06-23 2000-01-11 Minimierung der verwendung von busbefehlcodezeichen zur anforderung des startens und des endes einer verriegelung Expired - Lifetime DE60002077T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/339,351 US6430639B1 (en) 1999-06-23 1999-06-23 Minimizing use of bus command code points to request the start and end of a lock
US339351 1999-06-23
PCT/US2000/000605 WO2000079404A1 (en) 1999-06-23 2000-01-11 Minimizing use of bus command code points to request the start and end of a lock

Publications (2)

Publication Number Publication Date
DE60002077D1 DE60002077D1 (de) 2003-05-15
DE60002077T2 true DE60002077T2 (de) 2004-03-04

Family

ID=23328620

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60002077T Expired - Lifetime DE60002077T2 (de) 1999-06-23 2000-01-11 Minimierung der verwendung von busbefehlcodezeichen zur anforderung des startens und des endes einer verriegelung

Country Status (6)

Country Link
US (1) US6430639B1 (de)
EP (1) EP1190331B1 (de)
JP (1) JP4565786B2 (de)
KR (1) KR100687822B1 (de)
DE (1) DE60002077T2 (de)
WO (1) WO2000079404A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973543B1 (en) * 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US6934806B2 (en) * 2002-09-23 2005-08-23 International Business Machines Corporation Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system
US7076680B1 (en) * 2003-03-14 2006-07-11 Sun Microsystems, Inc. Method and apparatus for providing skew compensation using a self-timed source-synchronous network
DE102006055513A1 (de) * 2006-05-24 2007-11-29 Robert Bosch Gmbh Kommunikationsbaustein
DE102007063291A1 (de) * 2007-12-27 2009-07-02 Robert Bosch Gmbh Sicherheitssteuerung
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US10572387B2 (en) * 2018-01-11 2020-02-25 International Business Machines Corporation Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer
US11163688B2 (en) 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5175837A (en) 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
JP2830116B2 (ja) * 1989-07-27 1998-12-02 日本電気株式会社 マルチプロセッサシステムにおけるロック制御機構
US5615373A (en) * 1993-08-26 1997-03-25 International Business Machines Corporation Data lock management in a distributed file server system determines variable lock lifetime in response to request to access data object
DE69424565T2 (de) 1993-12-01 2001-01-18 Marathon Techn Corp Fehler-betriebssichere/fehler tolerante computerbetriebsmethode
US5586253A (en) 1994-12-15 1996-12-17 Stratus Computer Method and apparatus for validating I/O addresses in a fault-tolerant computer system
US5706446A (en) * 1995-05-18 1998-01-06 Unisys Corporation Arbitration system for bus requestors with deadlock prevention
US6560682B1 (en) 1997-10-03 2003-05-06 Intel Corporation System and method for terminating lock-step sequences in a multiprocessor system
US9919801B2 (en) * 2015-04-10 2018-03-20 B/E Aerospace, Inc. Articulating foot well divider for adjacent parallel passenger seats

Also Published As

Publication number Publication date
EP1190331B1 (de) 2003-04-09
KR100687822B1 (ko) 2007-02-28
KR20020012616A (ko) 2002-02-16
US6430639B1 (en) 2002-08-06
EP1190331A1 (de) 2002-03-27
JP4565786B2 (ja) 2010-10-20
DE60002077D1 (de) 2003-05-15
WO2000079404A1 (en) 2000-12-28
JP2003527652A (ja) 2003-09-16

Similar Documents

Publication Publication Date Title
DE69733384T2 (de) Prozessoruntersystem für den Gebrauch mit einer universellen Rechnerarchitektur
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69628127T2 (de) Verfahren und Gerät um die Kohärenz in einem Multiprozessorsystem anzuzeigen
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE10085385B3 (de) Vierfach gepumpte Bus-Architektur und Protokoll
DE69725687T2 (de) Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem
DE2854485C2 (de) Datenverarbeitungsanlage
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE4035837A1 (de) Bus-hauptschnittstellenschaltung mit transparenter unterbrechung einer datenuebertragungsoperation
DE3502147C2 (de)
DE60106624T2 (de) Verriegelung in einem distribuierten system
DE3606211A1 (de) Multiprozessor-computersystem
DE4018481C2 (de)
DE10316725A1 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System

Legal Events

Date Code Title Description
8364 No opposition during term of opposition