DE69822866T2 - System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem - Google Patents

System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem Download PDF

Info

Publication number
DE69822866T2
DE69822866T2 DE69822866T DE69822866T DE69822866T2 DE 69822866 T2 DE69822866 T2 DE 69822866T2 DE 69822866 T DE69822866 T DE 69822866T DE 69822866 T DE69822866 T DE 69822866T DE 69822866 T2 DE69822866 T2 DE 69822866T2
Authority
DE
Germany
Prior art keywords
memory
common bus
memory request
generated
bus
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
DE69822866T
Other languages
English (en)
Other versions
DE69822866D1 (de
Inventor
J. Robert MILLER
A. Edward MCDONALD
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE69822866D1 publication Critical patent/DE69822866D1/de
Application granted granted Critical
Publication of DE69822866T2 publication Critical patent/DE69822866T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein Mehrprozessorsysteme und im Besonderen ein System und ein Verfahren zur Unterbrechung eines Zustands einer Lockstep-Sequenz in einem Server, der mehrere Prozessoreinheiten aufweist.
  • STAND DER TECHNIK
  • Moderne Computeranwendungen implementieren zunehmend Highend-Aufgaben, die für deren effiziente Ausführung eine Mehrzahl von Prozessoren benötigen. Mehrprozessorsysteme ermöglichen die parallele Ausführung mehrerer Aufgaben an zwei oder mehr Zentraleinheiten ("CPUs"). Ein typisches Beispiel für ein Mehrprozessorsystem ist unter anderem ein Netzwerkserver. Vorzugsweise wird ein Mehrprozessorsystem unter Verwendung allgemein erhältlicher Bauteile hergestellt, wie etwa dem Intel Pentium Pro Prozessor (auch bekannt als "P6" Prozessor), PCI E/A-Chipsätzen, einer P6-Bustopologie und Standard-Speichermodulen wie etwa SIMMs und DIMMs. Es gibt zahlreiche allgemein bekannte Architekturen für Mehrprozessorsysteme, wie etwa das symmetrische Multiprocessing ("SMP"), der uneinheitliche Speicherzugriff ("NUMA" als englische Abkürzung von Non-Uniform Memory Access), Cache-kohärentes NUMA ("CC-NUMA"), Clustered Computing und Massiv-Parallelverarbeitung ("MMP" als englische Abkürzung von Massively Parallel Processing).
  • Ein System für das symmetrische Multiprocessing ("SMP") weist zwei oder mehr identische Prozessoren auf, die einzeln als "Peers" Verarbeitungen ausführen (d. h. keine Master-/Slave-Verarbeitung). Jeder der Prozessoren (oder jede der CPUs) in einem SMP-System weisen den gleichen Zugriff auf die Ressourcen des Systems auf, einschließlich des Speicherzugriffs. Ein NUMA-System weist zwei oder mehr übereinstimmende Prozessoren auf, die einen ungleichen Zugriff auf den Speicher aufweisen. NUMA umfasst verschiedene unterschiedliche Architekturen, die aufgrund ihrer uneinheitlichen Speicherzugriffslatenz in Gruppen. zusammengefasst werden können, einschließlich replizierter Speichercluster ("RMC"), MPP und CC-NUMA. In einem NUMA-System ist der Speicher für gewöhnlich in lokale Speicher unterteilt, die nahe an Prozessoren platziert sind, sowie in entfernte Speicher, die nicht nahe an einem Prozessor oder Prozessor-Cluster angeordnet sind. Gemeinsam genutzte Speicher können in einem der lokalen Speicher zugewiesen oder auf zwei oder mehr lokale Speicher verteilt sein. In einem CC-NUMA-System nutzen mehrere Prozessoren in einem einzigen Knoten einen einzelnen Speicher gemeinsam, und die Cache-Kohärenz wird unter Verwendung von Hardware-Techniken aufrechterhalten. Im Gegensatz zu einem SMP-Modus verwendet ein CC-NUMA-System allerdings ein Kohärenzschema auf Verzeichnisbasis an Stelle eines Snoopy-Busses, um die Kohärenz an allen Prozessoren aufrechtzuerhalten. RMC und MPP weisen eine Mehrzahl von Konten und Clustern auf und erhalten die Kohärenz durch Software-Techniken aufrecht. RMC und MPP können als NUMA-Architekturen beschrieben werden, und zwar aufgrund der ungleichen Speicherlatenzen, die der Software-Kohärenz zwischen Knoten zugeordnet sind.
  • Alle der vorstehend beschriebenen Mehrprozessorarchitekturen erfordern eine bestimmte Art einer Cache-Kohärenz-Vorrichtung, die auf Hardware- oder Softwareebene implementiert werden kann. Hochgeschwindigkeits-CPUs, wie etwa der P6 Prozessor, verwenden einen internen Cache und für gewöhnlich einen externen Cache zur Maximierung der CPU-Geschwindigkeit. Da ein SMP-System für gewöhnlich nur eine Kopie des Betriebssystems ausführt, muss die Kooperation der CPUs und des Speichers die Datenkohärenz aufrechterhalten. In diesem Zusammenhang bedeutet Kohärenz, dass es zu jedem Zeitpunkt nur einen einzigen gültigen Wert für jedes Datum gibt. Somit ist es erforderlich, die Kohärenz zwischen den CPU-Caches und dem Hauptspeicher aufrechtzuerhalten.
  • Eine beliebte Kohärenztechnik verwendet einen "Snoopy-Bus" bzw. einen schnüffelnden Bus. Jeder Prozessor erhält dessen eigenen lokalen Cache aufrecht und "schnüffelt" (Snooping) auf dem Bus in der Suche nach Lese- und Schreiboperationen zwischen anderen Prozessoren und dem Hauptspeicher, die den Inhalt des eigenen Cache beeinflussen können. Wenn ein erster Prozessor versucht auf ein Datum in dem Hauptspeicher zuzugreifen, das ein zweiter Prozessor modifiziert hat und in dessen Cache speichert, unterbricht der zweite Prozessor den Speicherzugriff des ersten Prozessors und schreibt den Inhalt des eigenen Cache in den Speicher. Danach erfahren alle anderen Snoop-Prozessoren auf dem Bus, einschließlich des ersten Prozessors, von dem Auftreten des Schreibvorgangs auf dem Bus und aktualisieren deren Cache-Zustandsinformationen zur Aufrechterhaltung der Kohärenz.
  • Eine weitere beliebte Kohärenztechnik ist die "Cache-Kohärenz auf Verzeichnisbasis". Caching auf Verzeichnisbasis speichert den Zustand und die Position jedes Datenblocks in dem Hauptspeicher. Für jede gemeinsam nutzbare Speicheradresszeile existiert ein "Präsenz"-Bit für jeden kohärenten Prozessor-Cache in dem System. Immer wenn ein Prozessor eine Datenzeile aus dem Speicher für dessen Cache anfordert, wird das Präsenz-Bit für diesen Cache in der Speicherzelle gesetzt. Immer wenn einer der Prozessoren versucht, in diese Speicherzeile zu schreiben, werden die Präsenz-Bits dazu verwendet, die Cache-Zeilen aller Caches ungültig zu machen, die diese Speicherzeile vorher verwendet haben. Danach werden alle Präsenz-Bits für den Prozessor zurückgesetzt und das spezielle Präsenz-Bit wird für den Prozessor gesetzt, der in die Speicherzeile schreibt. Somit müssen sich nicht alle Prozessoren auf einem gemeinsamen Snoop-Bus befinden, da das Verzeichnis die Kohärenz für die einzelnen Prozessoren aufrechterhält.
  • Aus der vorstehenden Beschreibung wird deutlich, dass von Zeit zu Zeit zwei oder mehr Prozessoren versuchen, gleichzeitig auf Daten an der gleichen Position zuzugreifen. Während dem normalen Betrieb eines Mehrprozessorsystems kann dies dazu führen, dass einer oder mehrere Prozessoren "wiederholt" werden. Das heißt, ein Prozessor führt einen Speicherzugriff auf einen bestimmten Speicherplatz aus und der Speicherzugriff wird verweigert, da der Speicherplatz vorübergehend nicht verfügbar ist. Wenn dies eintritt, versucht der Prozessor den Speicherzugriff erneut innerhalb eines kurzen Zeitraums und ist für gewöhnlich beim wiederholten Zugriffsversuch auf den Speicherplatz erfolgreich.
  • Es ist allerdings bekannt, dass zwei oder mehr Prozessoren gelegentlich in einem sich endlos wiederholenden Zyklus von Wiederholungsversuchen festsitzen, wobei der Zugriff auf den gewünschten Speicherplatz zu keinem Zeitpunkt gelingt. Dieser Zustand kann als "Lockstep-Sequenz" bezeichnet werden. Die Umstände, die zu einer Lockstep-Sequenz führen, sind komplex, und es können aufgrund der komplexen Bauweise und der Anzahl der möglichen Zustände in dem System nur schwer Vorkehrungen dafür getroffen werden, das eine Mehrprozessorkonstruktion nicht für einen Lockstep-Zustand anfällig ist. Im Wesentlichen kann eine Lockstep-Sequenz als eine Gruppe von CPUs erkannt werden, die versucht auf eine Datenzeile in dem Speicher zuzugreifen, die durch eine andere CPU gesperrt worden ist, die die Kontrolle über diese Zeile aufweist. Jede der ausgesperrten CPUs wiederholt den Zugriffsversuch auf die Zeile und ist dabei erfolglos, wodurch die Ansetzung eines erneuten Zugriffsversuchs bewirkt wird. Das Sequentialisieren der wiederholten Versuche durch die CPUs ist derart gegeben, dass es verhindert wird, dass die CPU, welche die tatsächliche Kontrolle bzw. Steuerung über die Zeile aufweist, die Zeile entsperrt bzw. freigibt, da die Speichersteuereinheit bzw. die Speichersteuerung immer damit beschäftigt ist, die Anforderungen von Wiederholungsversuchen der ausgesparten CPUs abzuarbeiten.
  • In diesem Fall erscheint es, als würde der Bus ein starkes Verkehrsaufkommen verzeichnen, wobei viele der CPUs wenn nicht sogar alle überhaupt keine tatsächliche Arbeit ausführen. Stattdessen werden die durch das Mehrprozessorsystem ausgeführten Anwendungen in dem jeweiligen Zustand "eingefroren". Wie dies bereits vorstehend im Text erwähnt worden ist, kann dieser Zustand nur schwer reproduziert und korrigiert werden, und zwar aufgrund der Komplexität der Zeitsteuerung der Speicheranforderungen, die diesen Zustand bewirken. Das Ergebnis ist es, dass viele Arte von Mehrprozessorsystemen von Zeit zu Zeit gesperrt werden, und wobei die Intervention bzw. der Eingriff durch eine Bedienungsperson erforderlich ist, um den Zustand zu beheben. Dies führt zu zahlreichen Frustrationen und verringert die insgesamt die Verarbeitungseffizienz des Systems.
  • Auf dem Gebiet werden somit verbesserte Mehrprozessorsysteme benötigt, die effektiver intermittierende eingefrorene Zustände verhindern können, die eine Folge von Lockstep-Sequenzen zwischen zwei oder mehr Prozessoren sind. Auf dem Gebiet werden speziell Systeme, Schaltungen und Verfahren benötigt, die in der Lage sind, einen Lockstep-Zustand innerhalb eines verhältnismäßig kurzen Zeitraums zu beheben, und zwar ohne dass ein Eingriff durch eine Bedienungsperson erforderlich ist.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die gemäß dem Stand der Technik inhärent bestehenden Probleme in Bezug auf Lockstep-Sequenzen werden durch die vorliegende Erfindung behoben. Die gegenständlichen Hauptansprüche 1 und 17 definieren entsprechend einen ersten und einen zweiten Aspekt der vorliegenden Erfindung. Weitere Ausführungsbeispiele der vorliegenden Erfindung sind in den anhängigen Unteransprüchen ausgeführt. In einem Ausführungsbeispiel der vorliegenden Erfindung ist ein Steuerkreis zur Verwendung in einem Verarbeitungssystem vorgesehen, das eine Mehrzahl von Prozessoren aufweist, die über einen ersten gemeinsamen Bus mit einem Hauptspeicher gekoppelt sind, wobei der Steuerkreis eine Lockstep-Sequenz von Speicheranforderungen pertubiert, die von den Prozessoren empfangen werden. Der Steuerkreis umfasst einen Speicheranforderungsgenerator, der mit dem ersten gemeinsamen Bus gekoppelt werden kann, um mindestens eine Speicheranforderung zu erzeugen, die in der Lage ist, die Lockestep-Sequenz der Speicheranforderungen zu beenden bzw. zu unterbrechen.
  • In einem Ausführungsbeispiel der vorliegenden Erfindung wird die mindestens eine Speicheranforderung pseudozufällig erzeugt. In einem weiteren Ausführungsbeispiel der vorliegenden Erfindung wird eine Dauer der mindestens einen Speicheranforderung pseudozufällig erzeugt. In einem weiteren Ausführungsbeispiel wird eine derartige Speicheranforderung oder die Dauer einer derartigen Speicheranforderung auf andere Art und Weise als pseudozufällig erzeugt.
  • In anderen Ausführungsbeispielen der vorliegenden Erfindung, wobei das Verarbeitungssystem ferner eine Mehrzahl von E/A-Vorrichtungen umfasst, die über einen zweiten gemeinsamen Bus mit dem Hauptspeicher gekoppelt sind, kann der Speicheranforderungsgenerator mit dem zweiten gemeinsamen Bus gekoppelt werden und erzeugt ferner mindestens eine Speicheranforderung auf dem zweiten gemeinsamen Bus, die in der Lage ist, eine zweite Lockstep-Sequenz von Speicheranforderungen zu unterbrechen bzw. zu beenden, die von den E/A-Vorrichtungen empfangen werden.
  • In wiederum anderen Ausführungsbeispielen der vorliegenden Erfindung wird die mindestens eine Speicheranforderung auf dem zweiten gemeinsamen Bus pseudozufällig erzeugt. In weiteren Ausführungsbeispielen der vorliegenden Erfindung wird eine Dauer der mindestens einen Speicheranforderung auf dem zweiten gemeinsamen Bus pseudozufällig erzeugt. Auch in diesem Fall kann eine derartige Speicheranforderung oder eine Dauer einer derartigen Speicheranforderung auch auf andere Art und Weise als pseudozufällig erzeugt werden.
  • In alternativen Ausführungsbeispielen der vorliegenden Erfindung werden die mindestens eine Speicheranforderung auf dem ersten gemeinsamen Bus und die mindestens eine Speicheranforderung auf dem zweiten gemeinsamen Bus gleichzeitig erzeugt. In weiteren Ausführungsbeispielen der vorliegenden Erfindung werden die mindestens eine Speicheranforderung auf dem ersten gemeinsamen Bus und die mindestens eine Speicheranforderung auf dem zweiten gemeinsamen Bus zu unterschiedlichen Zeitpunkten erzeugt.
  • In den vorstehenden Ausführungen wurden die Merkmale und technischen Vorteile der vorliegenden Erfindung grob beschrieben, so dass der Fachmann auf dem Gebiet die folgende genaue Beschreibung der vorliegenden Erfindung leichter verstehen kann. Nachstehend beschrieben werden weitere Merkmale und Vorteile der vorliegenden Erfindung, die den Gegenstand der Ansprüche der Erfindung bilden. Die vorstehend aufgeführte Funktionalität kann zum Beispiel in Software, Hardware, Firmware oder als eine andere geeignete Kombination aus mindestens zwei dieser Möglichkeiten implementiert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Nachstehend wird auf die folgende Beschreibung in Bezug auf die beigefügten Zeichnungen verwiesen, um ein umfassenderes Verständnis der vorliegenden Erfindung und deren Vorteilen zu vermitteln, wobei übereinstimmende Objekte/Elemente in den Zeichnungen mit den gleichen Bezugsziffern bezeichnet sind. In den Zeichnungen zeigen:
  • 1 ein Blockdiagramm eines beispielhaften Standard-High-Volume ("SHV") Computersystems mit acht Prozessoren mit. symmetrischem Multiprocessing ("SMP"), das ein Paar hoch entwickelter Speichersteuereinheiten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung einsetzt;
  • 2 ein Blockdiagramm eines beispielhaften Pseudozufalls-Speicheranforderungsgenerators gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und
  • 3 ein Flussdiagramm, das einen beispielhaften Betrieb einer hoch entwickelten Steuereinheit ("AMC" als englische Abkürzung von Advanced Memory Controller) darstellt, mit einem Speicheranforderungsgenerator gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Der folgende Text beschreibt die vorliegende Erfindung zwar in einem symmetrischen Multiprocessing-System, wobei hiermit jedoch deutlich festgestellt wird, dass dies lediglich Veranschaulichungszwecken dient. Der Fachmann auf dem Gebiet wird erkennen, dass die Grundsätze bzw. die Prinzipien der vorliegenden Erfindung zur Beseitigung von Lockstep-Zuständen auch leicht in eine Vielzahl von Mehrprozessorsystemen integriert werden können, zu denen unter anderem NUMA, RMC, CC-NUMA, MPP und andere ähnliche Systeme zählen. Zusätzlich bedeutet bzw. bedeuten der Ausdruck "zugeordnet" und Abwandlungen bzw. Variationen dieses Ausdrucks gemäß der Verwendung hierin etwas aufweisen, in etwas vorhanden, etwas verbinden, enthalten, in etwas enthalten sein, verbinden mit, koppelt mit, übertragbar bzw. kommunizierbar mit, zusammenwirken mit, verschachteln, eine Eigenschaft von etwas sein, mit etwas verbunden sein, haben, eine bestimmte Eigenschaft haben oder dergleichen.
  • In erstem Bezug auf die Abbildung aus 1 veranschaulicht diese ein Blockdiagramm eines beispielhaften Standard-High-Volume ("SHV") Computersystems (das allgemein mit der Bezugsziffer 100 bezeichnet ist) mit acht Prozessoren mit symmetrischem Multiprocessing ("SMP"), das ein Paar hoch entwickelter Speichersteuereinheiten 115 einsetzt, und zwar gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das SMP-System 100 weist zwei separate Prozessorbausteine auf. Ein erster Baustein umfasst die Prozessoren 105a105d (nachstehend "CPU1" bis "CPU4"), die hoch entwickelte Steuereinheit 115a (nachstehend "AMC1"), den Speicher 120a und das Verzeichnis 125a. Ein zweiter Baustein umfasst die Prozessoren 105e105h (nachstehend "CPU5" bis "CPU8"), die hoch entwickelte Speichersteuereinheit 115 (nachstehend "AMC2"), den Speicher 120b und das Verzeichnis 125b. Die beiden Bausteine sind über einen gemeinsamen E/A-Bus 130 miteinander verbunden.
  • In dem ersten Baustein sind CPU1 bis CPU4 über den CPU-Bus 110a mit AMC1 verbunden. In dem zweiten Baustein sind CPU5 bis CPU8 über den CPU-Bus 110b mit AMC2 gekoppelt. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem CPU-Bus 110 um einen geteilten Transaktionsbus bzw. Split-Transaction-Bus mit hoher Bandbreite, der mit einem Port bzw. Anschluss der AMC gekoppelt ist. Der zweite Port der AMC ist mit dem E/A-Bus 130 gekoppelt. Der E/A-Bus 130 ist über E/A-Brücken 135a135b (nachstehend E/A-Brücke 1 bis E/A-Brücke 4) mit vier PCI-Teilsystemen 140a bis 140d (nachstehend "PCI-Teilsystem 1" bis "PCI-Teilsystem 4") gekoppelt. Die AMC1 und AMC2 steuern entsprechend den Zugriff auf den Speicher 120a und den Speicher 120b. In einem Ausführungsbeispiel der vorliegenden Erfindung handelt es sich bei dem Speicher 120a und dem Speicher 120b um DRAM-Anordnungen, bei denen die Kohärenz durch den Einsatz von Protokollen und einem Verzeichnis aufrechterhalten werden.
  • Das SMP-System 100 implementiert ein hybrides Cache-Kohärenz-Schema zur Verfolgung der Datenbewegungen zwischen und unter verschiedenen CPU-Caches, den Speichern 120a und 120b sowie CPU1 bis CPU8. Die CPU1 bis CPU4 enthalten Cache-Speicher (nachstehend entsprechend "Cache 1 bis Cache 4"). Die CPU5 bis CPU8 enthalten Cache-Speicher (nachstehend entsprechend "Cache 5 bis Cache 8"). Bei den CPU-Cache-Speichern kann es sich um interne oder externe Cache-Speicher handeln. Die CPU1 bis CPU4 können ein Bus-Snooping-Protokoll auf dem CPU-Bus 110a verwenden, um die Kohärenz untereinander und mit dem Speicher 120a aufrechtzuerhalten. Wenn ein Prozessor verfügbare Daten benötigt, die "schmutzig" bzw. "verfälscht" (d. h. modifiziert) in dem Cache-Speicher eines anderen Prozessors gespeichert sind, tauschen die Prozessoren die Daten aus, anstatt auf die Speicher 120a und 120b zuzugreifen, wodurch die Kohärenz zwischen den Prozessoren aufrechterhalten bleibt.
  • Die Kohärenz zwischen den Hauptspeichern 120a und 120b und dem Cache 1 bis Cache 8 wird durch eine Kombination aus zentralisierter/verteilter Cache-Kohärenz auf Verzeichnisbasis aufrechterhalten. In den Verzeichnissen 125a und 125b identifiziert eine Speicherzeilen-Statustabelle ("MLST"), welche Gruppe von Prozessoren (d. h. CPU1 bis CPU4 oder CPUS bis CPU8), die über einen gemeinsamen Bus (d. h. den CPU-Bus 110a oder den CPU-Bus 110b) gekoppelt sind, Speicherzeilen in den ihnen zugeordneten Cache-Speichern aufweisen (d. h. Cache 1 bis Cache 4 oder Cache 5 bis Cache 8). Wenn ein Prozessor Daten anfordert, identifiziert die Statustabelle, wo sich die aktuellste oder aktuelle Kopie der Daten befindet. In vorteilhafter Weise erfordert dieses Verfahren der Aufrechterhaltung der Cache-Kohärenz keine Ausführung zusätzlicher Arbeiten, bis ein Prozessor die Daten benötigt, die sich in einem Cache befinden, auf den über Snooping nicht zugegriffen werden kann.
  • In einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfassen alle Bauteile mit Ausnahme von AMC1 und AMC2 des SMP-Systems 100 Artikelchips bzw. allgemein verfügbare Chips, wodurch die Systemkosten so gering wie möglich gehalten werden. Zum Beispiel kann es sich bei CPU1 bis CPU8 um Intel Pentium Pro Prozessoren handeln, wobei der E/A-Bus 130 den PCI E/A-Chipsatz umfassen kann, und wobei die CPU-Busse 110a und 110b und der E/A-Bus 130 unter Verwendung der Pentium Pro Bus-Topologie implementiert werden können. Eine detailliertere Erörterung der Betriebsweise des SMP-Systems 100 und im Besonderen von AMC1 und AMC2 ist in der Offenbarung von WO-A-9825208 vorgesehen, mit dem Titel "COMPUTER SYSTEM INCLUDING MULTIPLE SNOOPED, MULTIPLE MASTERED SYSTEM BUSSES AND METHOD FOR INTERCONNECTING SAID BUSSES."
  • Wie dies bereits vorstehend im Text beschrieben worden ist können Lockstep-Sequenzen in Mehrprozessorsystemen auftreten, wie etwa in einem SMP-System 100. Sie können als Folge eines Versuchs auftreten, bei dem mehrere Prozessoren gleichzeitig versuchen auf den Speicher 120a oder 120b zuzugreifen. Dies kann auch als Folge dessen auftreten, dass mehrere PCI-Teilsysteme gleichzeitig versuchen auf den Speicher 120a oder den Speicher 120b zuzugreifen. Zu guter Letzt kann eine Lockstep-Sequenz auch als Folge des gleichzeitigen Versuchs einer Kombination aus Prozessor und PCI-Teilsystemen auftreten, auf den Speicher 120a oder den Speicher 120b zuzugreifen.
  • Das vorliegende Ausführungsbeispiel überwindet derartige Probleme unter Verwendung einer Schaltkreisanordnung, die pseudozufällige Speicheranforderungen mit hoher Priorität an den CPU-Bus 110, den E/A-Bus 130 oder an beide Busse vorsieht. Die pseudozufällige Speicheranforderung wird in die Lockstep-Sequenzen der Speicheranforderungen eingefügt, welche die CPUs und/oder die PCI-Teilsysteme anhalten. In einem Ausführungsbeispiel der vorliegenden Erfindung werden die pseudozufälligen Speicheranforderungen durch Busanforderungsgeneratoren erzeugt, die vorübergehend entweder den CPU-Bus 10 oder den E/A-Bus 130 anhalten, wodurch es verhindert wird, dass die CPUs oder das E/A-Teilsystem Speicheranforderungen an den entsprechenden Port bzw. Anschluss der AMC mit zwei Anschlüssen sendet. Durch die Perturbation der Zeitsteuerung der CPU-Speicheranforderungen und/oder der PCI-Teilsystem-Speicheranforderungen riecht der pseudozufällige Speicherzugriff aus, um die Lockstep-Sequenz zu unterbrechen. Die pseudozufälligen Speicheranforderungen mit hoher Priorität sind von verhältnismäßig kurzer und pseudozufälliger Dauer und können dazwischen ausreichende Abstände aufweisen, so dass bei der normalen Verarbeitung nur minimaler Overhead-Aufwand entsteht, wenn keine Lockstep-Sequenzen auftreten. Das vorliegende Ausführungsbeispiel wirkt sich nur minimal auf die Speicherbandbreite aus, da der Speicher zwei Anschlüsse aufweist und den Zugriff an einem ersten Anschluss ermöglicht, wenn eine pseudozufällige Speicheranforderung an einem zweiten Anschluss aktiv ist.
  • Die Abbildung aus 2 veranschaulicht ein Blockdiagramm einer ABC 115 mit einem beispielhaften Pseudozufalls-Speicheranforderungsgenerator 200 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Zusätzlich zu dem Pseudozufalls-Speicheranforderungsgenerator 200 umfasst die AMC 115 ferner eine CPU-Busschnittstelle 205, eine E/A-Busschnittstelle 210 und eine Speichersteuerungslogik 215. Die Speichersteuerung 215 steuert eine Speicherzeilen-Statustabelle ("MLST") in dem Verzeichnis 125 und erzeugt/steuert Kohärenztransaktionen und eine DRAM-Steuereinheit mit zwei Anschlüssen bzw. Ports. Die Speicheranforderungen werden von dem E/A-Bus 130 und von dem CPU-Bus 110 empfangen und zu der entsprechenden Zeile in dem Speicher 120 geleitet.
  • Der Speicheranforderungsgenerator 200 erzeugt Speicheranforderungen mit hoher Priorität sowohl auf dem CPU-Bus 110 als auch dem E/A-Bus 130. Gemäß dem veranschaulichten Ausführungsbeispiel führen die Speicheranforderungen mit hoher Priorität keine signifikanten Handlungen an dem Speicher aus und dienen lediglich zur Perturbation einer etwaigen Lockup-Sequenz, die auftreten kann, wenn die Speicheranforderung mit hoher Priorität auf dem CPU-Bus 110 und/oder dem E/A-Bus 130 übermittelt wird. Diese Speicheranforderungen mit hoher Priorität werden pseudozufällig unter Verwendung eines linearen, rückgekoppelten Schieberegisters ("LFSR") 220 erzeugt. Die Zeitsteuerung des LFSR 220 ist derart, dass eine Speicheranforderung mit hoher Priorität aperiodisch nur einmal während mehreren hundert Buszyklen bis vielleicht mehreren tausend Buszyklen an dem CPU-Bus 110 und/oder dem E/A-Bus 130 erzeugt wird. Die Länge jeder Speicheranforderung mit hoher Priorität stellt ebenfalls eine pseudozufällig kleine Anzahl von Buszyklen (für gewöhnlich ein bis sechzehn Buszyklen) dar. Somit sind die durch den Speicheranforderungsgenerator 200 erzeugten Speicheranforderungen mit hoher Priorität nur für einen kleinen Teil des Gesamtaufkommens des Busverkehrs auf dem CPU-Bus 110 und dem E/A-Bus 130 verantwortlich.
  • Der beispielhafte Speicheranforderungsgenerator 200 weist eine Steuerungslogik auf, die Speicheranforderungen mit hoher Priorität nur an einen Bus wie etwa nur an den CPU-Bus 110 oder an beide Busse senden kann. In einem Ausführungsbeispiel werden die Speicheranforderungen mit hoher Priorität gleichzeitig an beide Busse gesendet. In einem anderen Ausführungsbeispiel umfasst das LFSR 220 zwei separate lineare, rückgekoppelte Schieberegister, die unabhängige Speicheranforderungen mit hoher Priorität unter Verwendung verschiedener Zeitsteuerungsalgorithmen an dem CPU-Bus 110 und dem E/A-Bus 130 erzeugen. Da die Speicheranforderungen mit hoher Priorität einzeln bzw. unabhängig voneinander und sehr selten erzeugt werden, treten sie selten gleichzeitig an beiden Anschlüssen des Speichers mit zwei Anschlüssen auf, wodurch die Auswirkungen auf die Speicherbandbreite insgesamt so gering wie möglich gehalten werden.
  • Die Abbildung aus 3 veranschaulicht schließlich ein Flussdiagramm, das den beispielhaften Betrieb einer modernen Speichersteuereinheit ("AMC" als englische Abkürzung für Advanced Memory Controller) 115 darstellt, die einen Speicheranforderungsgenerator 200 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung aufweist. Der beispielhafte Betrieb zeigt die Erzeugung von Speicheranforderungen mit hoher Priorität an dem CPU-Bus 110. Hiermit wird festgestellt, dass die folgende Beschreibung des beispielhaften Ausführungsbeispiels gleichermaßen für die Erzeugung von Speicheranforderungen mit hoher Priorität an dem E/A-Bus 130 gilt.
  • Die Ausgangssignale des LFSR 220 umfassen im Wesentlichen START Signale und STOP Signale, die es bewirken, dass der Speicheranforderungsgenerator 200 Speicheranforderungen mit hoher Priorität an dem CPU-Bus 110 einleitet oder unterbricht bzw. beendet. In der einfachsten Form kann es sich bei der Ausgabe des LFSR 220 um eine Reihe von Impulsen mit pseudozufälligem Abstand mit pseudozufälligen Impulsbreiten handeln (die zum Beispiel erneut eine Breite von ein bis sechzehn Taktzyklen aufweisen können), wobei die ansteigende Flanke jedes Impulses das START Signal darstellt, während es sich bei der abfallenden Flanke jedes Impulses um das STOP Signal handelt.
  • Der Speicheranforderungsgenerator 200 empfängt in dem Verfahrensschritt 301 das START Signal von dem LFSR 220. Der Speicheranforderungsgenerator 200 leitet danach in dem Verfahrensschritt 302 an dem CPU-Bus 110, eine Speicheranforderung mit hoher Priorität ein, welche Buszyklen in Anspruch nimmt und es verhindert, dass die CPUs weitere Speicheranforderungen an den entsprechenden Port der AMC 115 mit zwei Anschlüssen senden.
  • Nach einem vergleichsweise kurzen folgenden Zeitraum empfängt der Speicheranforderungsgenerator 200 in dem Verfahrensschritt 303 das STOP Signal von dem LFSR 220. Daraufhin unterbricht bzw. beendet der Speicheranforderungsgenerator 200 in dem Verfahrensschritt 304 die aktive Speicheranforderung mit hoher Priorität an dem CPU-Bus 110. Dies gibt den CPU-Bus 110 frei und ermöglicht es, dass die CPUs das Senden von Speicheranforderungen an den entsprechenden Anschluss der AMC 115 mit zwei Anschlüssen wieder aufnehmen. Zu diesem Zeitpunkt ist die alte Zeitsteuerungsbeziehung der durch die CPUs erzeugten Speicheranforderungen, die ursprünglich zu der Lockstep-Sequenz geführt hat, unterbrochen, und es ist unwahrscheinlich, dass die neue Zeitsteuerungsbeziehung eine weitere Lockstep-Sequenz einleitet. Der das START Signal und das STOP Signal einleitende Maschinenzyklus wird solange wiederholt, wie die AMC 115 betrieben wird.
  • Hiermit wird festgestellt, dass die im Zusammenhang mit den vorstehend genannten pseudozufällig erzeugten Impulsen beschriebenen Vorteile der vorliegenden Erfindung alternativ in jedem Ausführungsbeispiel ausgeführt werden können, das in der Lage ist, eine Lockstep-Sequenz von Speicheranforderungen zu perturbieren, die von einer Anzahl von Prozessoren empfangen werden. Zum Beispiel kann ein geeigneter "perturbierender" Impuls (der hierin allgemein als eine "Speicheranforderung" bezeichnet wird) erzeugt werden, um derartige Lockstep-Sequenzen zu unterbrechen bzw. zu beenden, wie etwa als Reaktion auf, auf der Basis von, abgeleitet von oder erzeugt gemäß jeder geeigneten angewandten mathematischen Theorie, ob zufällig bzw. wahlfrei erzeugt oder nicht, einschließlich statistischer Verfahren, stochastischer Modelle, der Chaostheorie, der Standardabweichung, der Wahrscheinlichkeitstheorie, Permutationen und Kombinationen, der Häufigkeit oder dergleichen.

Claims (20)

  1. Steuerkreis (115a) zur Perturbation einer Lockstep-Sequenz von Speicheranforderungen, die von Prozessoren (105a105d) empfangen werden, die in einem Verarbeitungssystem (100) vorgesehen sind, das eine Mehrzahl von Prozessoren (105a105d) aufweist, die über einen ersten gemeinsamen Bus (110a) mit einem Hauptspeicher (120a) gekoppelt sind, wobei der genannte Steuerkreis folgendes umfasst: einen Speicheranforderungsgenerator (200), der mit dem genannten ersten gemeinsamen Bus gekoppelt werden kann, um mindestens eine Speicheranforderung zu erzeugen, die in der Lage ist, die genannte Lockstep-Sequenz von Speicheranforderungen zu beenden.
  2. Steuerkreis nach Anspruch 1, wobei die genannte mindestens eine Speicheranforderung pseudozufällig erzeugt wird.
  3. Steuerkreis nach Anspruch 1, wobei eine Dauer der genannten mindestens einen Speicheranforderung pseudozufällig erzeugt wird.
  4. Steuerkreis nach Anspruch 1, wobei das genannte Verarbeitungssystem ferner eine Mehrzahl von E/A-Vorrichtungen umfasst, die über einen zweiten gemeinsamen Bus mit dem genannten Hauptspeicher gekoppelt sind, und wobei der genannte Speicheranforderungsgenerator mit dem genannten zweiten gemeinsamen Bus gekoppelt werden kann und ferner mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus erzeugt, die in der Lage ist, eine zweite Lockstop-Sequenz von Speicheranforderungen zu beenden, die von den genannten E/A-Vorrichtungen empfangen werden.
  5. Steuerkreis nach Anspruch 4, wobei die genannte mindestens eine Speicheranforderung an dem genannten zweiten gemeinsamen Bus pseudozufällig erzeugt wird.
  6. Steuerkreis nach Anspruch 4, wobei eine Dauer der genannten mindestens einen Speicheranforderung auf dem genannten zweiten gemeinsamen Bus pseudozufällig erzeugt wird.
  7. Steuerkreis nach Anspruch 4, wobei die genannte mindestens eine Speicheranforderung auf dem genannten ersten gemeinsamen Bus und die genannte mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus gleichzeitig erzeugt. werden.
  8. Steuerkreis nach Anspruch 4, wobei die genannte mindestens eine Speicheranforderung auf dem genannten ersten gemeinsamen Bus und die genannte mindestens eine Speicheranforderung auf dem genannter zweiten gemeinsamen Bus zu unterschiedlichen Zeitpunkten erzeugt werden.
  9. Verarbeitungssystem, das folgendes umfasst: eine Mehrzahl von Prozessoren; einen Hauptspeicher; ein Speichersteuerungssystem, das über einen ersten gemeinsamen Bus mit der genannten Mehrzahl von Prozessoren gekoppelt ist sowie mit dem genannten Hauptspeicher, um Speicheranforderungen von der genannten Mehrzahl von Prozessoren zu empfangen und um Daten zwischen der genannten Mehrzahl von Prozessoren und dem genannten Hauptspeicher zu übertragen; und einen Steuerkreis gemäß Anspruch 1.
  10. Verarbeitungssystem nach Anspruch 9, wobei die genannte mindestens eine Speicheranforderung pseudozufällig erzeugt wird.
  11. Verarbeitungssystem nach Anspruch 9, wobei eine Dauer der genannten mindestens einen Speicheranforderung pseudozufällig erzeugt wird.
  12. Verarbeitungssystem nach Anspruch 9, wobei das System ferner eine Mehrzahl von E/A-Vorrichtungen umfasst, die über einen zweiten gemeinsamen Bus mit der genannten Speichersteuerungsvorrichtung gekoppelt sind, wobei der genannte Speicheranforderungsgenerator mit dem genannten zweiten gemeinsamen Bus gekoppelt ist und ferner mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus erzeugt, die in der Lage ist, eine zweite Lockstep-Sequenz der Speicheranforderungen zu beenden, die von den genannten E/A-Vorrichtungen empfangen werden.
  13. Verarbeitungssystem nach Anspruch 12, wobei die genannte mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus pseudozufällig erzeugt wird.
  14. Verarbeitungssystem nach Anspruch 12, wobei eine Dauer der genannten mindestens einen Speicheranforderung auf dem genannten zweiten gemeinsamen Bus pseudozufällig erzeugt wird.
  15. Verarbeitungssystem nach Anspruch 12, wobei die genannte mindestens eine Speicheranforderung auf dem genannten ersten gemeinsamen Bus und die genannte mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus gleichzeitig erzeugt werden.
  16. Verarbeitungssystem nach Anspruch 12, wobei die genannte mindestens eine Speicheranforderung auf dem genannten ersten gemeinsamen Bus und die genannte mindestens eine Speicheranforderung auf dem genannten zweiten gemeinsamen Bus zu unterschiedlichen Zeitpunkten erzeugt werden.
  17. Verfahren zur Perturbation einer Lockstep-Sequenz von Speicheranforderungen, die von Prozessoren (105a105d) empfangen werden, wobei das Verfahren in einem Verarbeitungssystem (100) vorgesehen ist, das eine Mehrzahl von Prozessoren (105a105d) aufweist, die über einen ersten gemeinsamen Bus (110a) mit einem Hauptspeicher (120a) gekoppelt sind, wobei das Verfahren den Schritt des Erzeugens mindestens einer Speicheranforderung auf dem ersten gemeinsamen Bus (110a) umfasst, wobei die genannte mindestens eine Speicheranforderung in der Lage ist, die Lockstep-Sequenz der Speicheranforderungen zu beenden.
  18. Verfahren nach Anspruch 17, wobei die genannte mindestens eine Speicheranforderung pseudozufällig erzeugt wird.
  19. Verfahren nach Anspruch 17, wobei eine Dauer der genannten mindestens einen Speicheranforderung pseudozufällig erzeugt wird.
  20. Verfahren nach Anspruch 17, wobei das Verarbeitungssystem ferner eine Mehrzahl von E/A-Vorrichtungen umfasst, die über einen zweiten gemeinsamen Bus mit dem Hauptspeicher gekoppelt sind, wobei das Verfahren den weiteren Schritt des Erzeugens mindestens einer Speicheranforderung auf dem zweiten gemeinsamen Bus umfasst, wobei die mindestens eine Speicheranforderung auf dem zweiten Bus in der Lage ist, eine zweite Lockstep-Sequenz von Speicheranforderungen zu beenden, die von den E/A-Vorrichtungen empfangen werden.
DE69822866T 1997-10-03 1998-10-14 System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem Expired - Lifetime DE69822866T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/943,676 US6560682B1 (en) 1997-10-03 1997-10-03 System and method for terminating lock-step sequences in a multiprocessor system
US943676 1997-10-15
PCT/US1998/021792 WO1999019801A1 (en) 1997-10-03 1998-10-14 System and method for terminating lock-step sequences in a multiprocessor system

Publications (2)

Publication Number Publication Date
DE69822866D1 DE69822866D1 (de) 2004-05-06
DE69822866T2 true DE69822866T2 (de) 2005-02-03

Family

ID=25480072

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69822866T Expired - Lifetime DE69822866T2 (de) 1997-10-03 1998-10-14 System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem

Country Status (5)

Country Link
US (2) US6560682B1 (de)
EP (1) EP1029276B1 (de)
AU (1) AU1089999A (de)
DE (1) DE69822866T2 (de)
WO (1) WO1999019801A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430639B1 (en) * 1999-06-23 2002-08-06 Advanced Micro Devices, Inc. Minimizing use of bus command code points to request the start and end of a lock
US20030023794A1 (en) * 2001-07-26 2003-01-30 Venkitakrishnan Padmanabha I. Cache coherent split transaction memory bus architecture and protocol for a multi processor chip device
US6934814B2 (en) * 2002-11-05 2005-08-23 Newisys, Inc. Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
US6920532B2 (en) * 2002-11-05 2005-07-19 Newisys, Inc. Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
US6925536B2 (en) * 2002-11-05 2005-08-02 Newisys, Inc. Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US20060107116A1 (en) * 2004-10-25 2006-05-18 Michaelis Scott L System and method for reestablishing lockstep for a processor module for which loss of lockstep is detected
US7627781B2 (en) * 2004-10-25 2009-12-01 Hewlett-Packard Development Company, L.P. System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor
US7624302B2 (en) 2004-10-25 2009-11-24 Hewlett-Packard Development Company, L.P. System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor
US7818614B2 (en) * 2004-10-25 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for reintroducing a processor module to an operating system after lockstep recovery
US7502958B2 (en) * 2004-10-25 2009-03-10 Hewlett-Packard Development Company, L.P. System and method for providing firmware recoverable lockstep protection
US7366948B2 (en) * 2004-10-25 2008-04-29 Hewlett-Packard Development Company, L.P. System and method for maintaining in a multi-processor system a spare processor that is in lockstep for use in recovering from loss of lockstep for another processor
US7516359B2 (en) * 2004-10-25 2009-04-07 Hewlett-Packard Development Company, L.P. System and method for using information relating to a detected loss of lockstep for determining a responsive action
US7356733B2 (en) * 2004-10-25 2008-04-08 Hewlett-Packard Development Company, L.P. System and method for system firmware causing an operating system to idle a processor
US7308566B2 (en) * 2004-10-25 2007-12-11 Hewlett-Packard Development Company, L.P. System and method for configuring lockstep mode of a processor module
US8489837B1 (en) 2009-06-12 2013-07-16 Netlist, Inc. Systems and methods for handshaking with a memory module
GB2480557B (en) * 2010-05-21 2016-05-11 Brittpac Ltd Containers
US9405637B2 (en) 2011-01-18 2016-08-02 Texas Instruments Incorporated Locking/unlocking CPUs to operate in safety mode or performance mode without rebooting
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) * 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3905023A (en) * 1973-08-15 1975-09-09 Burroughs Corp Large scale multi-level information processing system employing improved failsaft techniques
US4055851A (en) * 1976-02-13 1977-10-25 Digital Equipment Corporation Memory module with means for generating a control signal that inhibits a subsequent overlapped memory cycle during a reading operation portion of a reading memory cycle
US4405898A (en) 1980-06-30 1983-09-20 International Business Machines Corporation Pseudo synchronous clocking
US4470112A (en) 1982-01-07 1984-09-04 Bell Telephone Laboratories, Incorporated Circuitry for allocating access to a demand-shared bus
US4751727A (en) * 1982-09-30 1988-06-14 American Telephone And Telegraph Company, At&T Bell Laboratories Multiprocessor computing system featuring shared global control
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
US5025370A (en) * 1986-09-02 1991-06-18 Koegel Robert J Circuit for preventing lock-out of high priority requests to a system controller
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US5006980A (en) * 1988-07-20 1991-04-09 Digital Equipment Corporation Pipelined digital CPU with deadlock resolution
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
EP0545581B1 (de) 1991-12-06 1999-04-21 National Semiconductor Corporation Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5430848A (en) 1992-08-14 1995-07-04 Loral Fairchild Corporation Distributed arbitration with programmable priorities
US5553248A (en) * 1992-10-02 1996-09-03 Compaq Computer Corporation System for awarding the highest priority to a microprocessor releasing a system bus after aborting a locked cycle upon detecting a locked retry signal
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
US5293496A (en) * 1993-01-12 1994-03-08 Unisys Corporation Inhibit write apparatus and method for preventing bus lockout
US5416434A (en) 1993-03-05 1995-05-16 Hewlett-Packard Corporation Adaptive clock generation with pseudo random variation
DE69322372T2 (de) 1993-04-06 1999-04-29 St Microelectronics Srl Für zwei verschiedene Protokollstandards geeignete Schnittstellenschaltung zwischen einem Steuerbus und einer integrierten Schaltung
US5553276A (en) 1993-06-30 1996-09-03 International Business Machines Corporation Self-time processor with dynamic clock generator having plurality of tracking elements for outputting sequencing signals to functional units
FR2708766B1 (fr) * 1993-08-03 1995-09-08 Bull Sa Procédé d'analyse d'interblocages dans un système d'exploitation.
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
US5706446A (en) * 1995-05-18 1998-01-06 Unisys Corporation Arbitration system for bus requestors with deadlock prevention
US5682537A (en) * 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5678026A (en) * 1995-12-28 1997-10-14 Unisys Corporation Multi-processor data processing system with control for granting multiple storage locks in parallel and parallel lock priority and second level cache priority queues
US5761454A (en) * 1996-08-27 1998-06-02 Vlsi Technology, Inc. Deadlock resolution methods and apparatus for interfacing concurrent and asynchronous buses
US6480918B1 (en) * 1998-12-22 2002-11-12 International Business Machines Corporation Lingering locks with fairness control for multi-node computer systems

Also Published As

Publication number Publication date
US6754787B2 (en) 2004-06-22
AU1089999A (en) 1999-05-03
DE69822866D1 (de) 2004-05-06
WO1999019801A1 (en) 1999-04-22
EP1029276A1 (de) 2000-08-23
US6560682B1 (en) 2003-05-06
EP1029276A4 (de) 2002-06-26
EP1029276B1 (de) 2004-03-31
US20030070050A1 (en) 2003-04-10

Similar Documents

Publication Publication Date Title
DE69822866T2 (de) System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE10085385B3 (de) Vierfach gepumpte Bus-Architektur und Protokoll
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE19580707C2 (de) PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus
DE4233569C2 (de) Informationsverarbeitungsgerät mit einer Mehrzahl von Prozessor-Modulen, die einen Fehlerüberwachungskreis enthalten
DE69733374T2 (de) Speichersteuerungsvorrichtung und -system
DE69632634T2 (de) Arbitrierungseinheit zum Multiprozessorsystembuszugriff mit Wiederholungsfähigkeit
DE69628609T2 (de) Distribuiertes Pipeline-Busarbitrierungssystem
US6047316A (en) Multiprocessor computing apparatus having spin lock fairness
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE3606211A1 (de) Multiprozessor-computersystem
DE4423559A1 (de) Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
DE112015004336T5 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE60311302T2 (de) Verfahren und vorrichtung zur verriegelung von mehreren clustern
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806