DE69804489T2 - Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen - Google Patents

Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen

Info

Publication number
DE69804489T2
DE69804489T2 DE69804489T DE69804489T DE69804489T2 DE 69804489 T2 DE69804489 T2 DE 69804489T2 DE 69804489 T DE69804489 T DE 69804489T DE 69804489 T DE69804489 T DE 69804489T DE 69804489 T2 DE69804489 T2 DE 69804489T2
Authority
DE
Germany
Prior art keywords
computing
elements
computing elements
processor
interrupt
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 - Fee Related
Application number
DE69804489T
Other languages
English (en)
Other versions
DE69804489D1 (de
Inventor
D. Bissett
A. Leveille
Erik Muench
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.)
Marathon Technologies Corp
Original Assignee
Marathon Technologies 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 Marathon Technologies Corp filed Critical Marathon Technologies Corp
Publication of DE69804489D1 publication Critical patent/DE69804489D1/de
Application granted granted Critical
Publication of DE69804489T2 publication Critical patent/DE69804489T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1633Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

    Technisches Gebiet
  • Die Erfindung betrifft das Aufrechterhalten einer synchronisierten Ausführung durch Prozessoren bei fehlerrobusten/fehlertoleranten Computersystemen. Hintergrund
  • Computersysteme, die in der Lage sind, ein Versagen der Hardware oder andere Fehler zu überstehen, werden im allgemeinen in drei Kategorien unterteilt: fehlerrobust, fehlertolerant und katastrophentolerant.
  • Fehlerrobuste Computersysteme können bei Hardwareversagen weiter funktionieren, oft mit verringerter Kapazität. Diese Systeme arbeiten entweder in einem Verfügbarkeitsmodus oder einem Integritätsmodus, aber nicht in beiden. Ein System ist "verfügbar", wenn ein Hardwareversagen nicht zu inakzeptablen Verzögerungen beim Zugriff durch den Anwender führt, d. h. das System, das in einem Verfügbarkeitsmodus arbeitet, ist so konfiguriert, daß es möglichst online bleibt, wenn ein Hardwarefehler auftritt. Ein System verfügt über Datenintegrität, wenn ein Hardwareversagen keinen Verlust und keine Verfälschung von Daten verursacht, d. h. ein System, das in einem Integritätsmodus arbeitet, ist so konfiguriert, daß es Datenverlust oder -verfälschung vermeidet, selbst wenn das System offline gehen muß, um dies zu bewirken.
  • Fehlertolerante Systeme betonen sowohl die Verfügbarkeit als auch die Integrität. Ein fehlertolerantes System bleibt verfügbar und bewahrt die Integrität der Daten bei Auftreten eines einzigen Hardwareversagens, und, unter manchen Umständen, bei Auftreten von multiplem Hardwareversagen.
  • Katastrophentolerante Systeme gehen über fehlertolerante Systeme hinaus. Im allgemeinen erfordern katastrophentolerante Systeme, daß der Verlust einer Rechnerstation aufgrund einer natürlichen oder von Menschen herbeigeführten Katastrophe die Verfügbarkeit des Systems nicht unterbricht und keinen Verlust bzw. Verfälschung von Daten verursacht.
  • Alle drei Fälle erfordern eine alternative Komponente, die weiterhin funktioniert, wenn eine Komponente versagt. Daher ist eine Redundanz von Komponenten eine Grundvoraussetzung für ein katastrophentolerantes, fehlertolerantes oder fehlerrobustes System, das sich von einem Versagen erholt oder dieses überspielt. Redundanz kann durch passive oder aktive Redundanz erreicht werden, die jeweils unterschiedliche Folgen haben.
  • Ein passiv redundantes System wie ein Checkpoint-Neustart-System bietet Zugriff auf alternative Komponenten, die nicht auf das aktuelle Programm bezogen sind und entweder aktiviert oder auf irgendeine Art modifiziert werden müssen, um eine ausgefallene Komponente zu ersetzen. Der nachfolgende Wechsel kann eine wesentliche Unterbrechung des Betriebs verursachen. Die nachfolgende Leistung des Systems kann ebenfalls beeinträchtigt sein. Beispiele für passiv redundante Systeme sind Standby-Server und Clustersysteme. Der Mechanismus für die Bewältigung eines Versagens bei einem passiv redundanten System besteht in einer Notumschaltung, oder Steuerungsumschaltung, auf einen alternativen Server. Der gegenwärtige Status der versagenden Anwendung kann verlorengehen, und die Anwendung muß möglicherweise in dem anderen System neu gestartet werden. Die Vorgänge der Notumschaltung und des Neustarts können eine Unterbrechung oder Verzögerung des Betriebs für die Anwender verursachen. Trotz solcher Verzögerungen bieten passiv redundante Systeme wie Standby-Server und Cluster eine "hohe Verfügbarkeit" und leisten keine kontinuierliche Datenverarbeitung, die üblicherweise mit "Fehlertoleranz" verbunden wird.
  • Ein aktiv redundantes System, wie ein Replikationssystem, bietet einen alternativen Prozessor, der gleichzeitig dasselbe Programm verarbeitet und im Fall eines Versagens einen kontinuierlichen Betrieb ermöglicht. Der Mechanismus für die Bewältigung eines Versagens besteht darin, daß während eines Versagens auf dem anderen Prozessor gerechnet wird. Da wenigstens zwei Prozessoren dieselben Daten gleichzeitig erkennen und verändern, sollte das Versagen einer einzigen Komponente sowohl für die Anwendung als auch für den Anwender nicht wahrzunehmen sein.
  • Ziel eines fehlertoleranten Systems ist es, korrekte Ergebnisse auf wiederholbare Art zu erzielen. Die Wiederholbarkeit stellt sicher, daß Operationen wiederaufgenommen werden können, nachdem ein Fehler entdeckt worden ist. Bei einem Checkpoint-Neustart-System beinhaltet dies, daß zu einem vorhergehenden Checkpoint zurückgegangen wird und die Eingaben aus einer Journal-Datei erneut abgespielt werden. Bei einem Replikationssystem wird die Wiederholbarkeit durch simultane Operation auf mehrfachen Instanzen eines Computers bewirkt.
  • Viele fehlertolerante Designs sind dafür bekannt, daß sie Einzelprozessor- Systeme haben. Es gibt auch einige fehlertolerante Systeme zum symmetrischen Multiprocessing ("SMP"). Die zusätzliche Komplexität, die durch die Fehlertoleranz bei einem SMP-System entsteht, verursacht Probleme bei vielen herkömmlichen Ansätzen bei der Fehlertoleranz.
  • Bei einem Checkpoint-Neustart-System ist die Checkpoint-Information etwas komplexer, aber der Wiederherstellungs-Algorithmus bleibt im wesentlichen gleich. Wiederholbarkeit kann ungefähr so definiert werden, daß das wiederholte Abspielen der Systemoperation in anderer Form abläuft als die ursprüngliche Systemoperation. Mit anderen Worten, die Verteilung der Arbeitslast unter SMP-Prozessoren beim Wiederabspielen muß nicht der Verteilung folgen, der gefolgt wurde, als der Fehler auftrat. Die Reihenfolge der Eingaben muß beibehalten werden, aber das relative zeitliche Verhältnis der Eingaben zueinander und zu den Anweisungsströmen, die auf den verschiedenen Prozessoren laufen, muß nicht beibehalten werden.
  • Bei dieser niedrigen Anforderung an die Wiederholbarkeit ist ein Wiederabspielen gültig, solange die durch das Wiederabspielen erzielten Ergebnisse der Eingabesequenz entsprechen. Ein Beispiel ist das Reservierungssystem einer Fluggesellschaft mit mehreren Kunden (z. B. Herr Schmidt und Frau Müller), die miteinander um den letzten Sitzplatz konkurrieren. Aufgrund der zeitlichen Abfolge der Eingabe und der Prozessorzeitsteuerung bekommt Frau Müller den Platz. Bevor ihr jedoch dieses Ergebnis mitgeteilt wird, tritt ein Fehler auf. Bei der Wiederabspielung bekommt Herr Schmidt den Platz. Obwohl es zu einem anderen Ergebnis geführt hat, ist die Wiederabspielung gültig, da es kein erkennbares Problem im Zusammenhang mit der Ergebnisänderung gibt (d. h. Frau Müller erfährt nie, daß sie den Platz beinahe bekommen hätte).
  • SMP macht Replikationssysteme wesentlich komplexer. Korrespondierende Prozessoren in korrespondierenden Systemen müssen zur gleichen Zeit die gleichen Ergebnisse liefern. Die zeitliche Abfolge der Eingabe muß bezüglich der Vielzahl von Anweisungsströmen genau beibehalten werden. Es ist kein Unterschied zwischen Prozessorausgleichszyklen erlaubt, da ein solcher Unterschied einen Einfluß darauf haben kann, wer welche Ressource zuerst bekommt. Die Herstellung eines SMP Systems mit Replikation erfordert eine Steuerung aller Aspekte des Systems, die die zeitliche Abfolge der Eingabedaten und den Ausgleich zwischen Prozessoren beeinflussen können.
  • Aus diesen Gründen werden fehlertolerante SMP-Systeme üblicherweise unter Verwendung des Checkpoint-Neustart-Ansatzes hergestellt. Bei solchen Systemen müssen die Anwendersoftware und das Betriebssystem speziell so gestaltet sein, daß sie Checkpoints unterstützen. Die EP-A-0 286 856 offenbart ein fehlertolerantes System zum symmetrischen Multiprocessing mit stark gekoppelten Rechenelementen.
  • Zusammenfassung
  • Die Erfindung, von der verschiedene Aspekte im folgenden beschrieben sind, wird im einzelnen durch die beigefügten Patentansprüche 1 und 24 definiert.
  • Im allgemeinen beinhaltet ein fehlertolerantes/fehlerrobustes Computersystem wenigstens zwei Rechenelemente, die mit wenigstens einem Controller verbunden sind. Jedes der Rechenelemente hat Taktgeber, die asynchron zu den Taktgebern der anderen Rechenelemente operieren. Die Rechenelemente operieren in einem ersten Modus, bei dem die Rechenelemente jeweils einen ersten Strom von Anweisungen in emuliertem Takt-Lockstep ausführen. Die Takt-Lockstep-Operation erfordert, daß die Rechenelemente die gleiche Sequenz von Anweisungen in der gleichen Reihenfolge durchführen, wobei jede Anweisung in demselben Taktzyklus von jedem Rechenelement durchgeführt wird. Die Rechenelemente operieren auch in einem zweiten Modus, bei dem die Rechenelemente jeweils einen zweiten Strom von Anweisungen im Anweisungs-Lockstep ausführen. Die Anweisungs-Lockstep-Operation erfordert, daß die Rechenelemente die gleiche Sequenz von Anweisungen in der gleichen Reihenfolge durchführen, erfordert aber nicht, daß die Rechenelemente die Anweisungen innerhalb desselben Taktzyklus durchführen.
  • Ausführungsformen des Computersystems können eins oder mehrere der folgenden Merkmale beinhalten. Beispielsweise kann jedes Rechenelement ein Multiprozessor-Rechenelement wie z. B. ein Rechenelement zum symmetrischen Multiprocessing (SMP) sein. Jedes Rechenelement kann implementiert werden, indem ein der Industrienorm entsprechendes Motherboard benutzt wird. Das System kann so konfiguriert sein, daß alle Prozessoren jedes Rechenelements bis auf einen deaktiviert werden, wenn die Rechenelemente im zweiten Modus operieren.
  • Der erste Strom von Anweisungen kann das Betriebssystem und Anwendersoftware implementieren, während der zweite Strom von Anweisungen Lockstep- Steuersoftware implementiert. Das Betriebssystem und die Anwendersoftware können nicht modifizierte Software sein, die für die Verwendung bei nicht fehlertoleranten Computersystemen konfiguriert sind.
  • Jedes Rechenelement kann einen oder mehrere Prozessoren, einen Speicher und eine Verbindung zum Controller beinhalten. Die Rechenelemente können so konfiguriert sein, daß auf den Speicher bezogene Aktualisierungsvorgänge bei der Ausführung der Vorgänge durch den Prozessor synchronisiert werden. Das System kann auch so konfiguriert sein, daß es DMA-Übertragungen an den Speicher initiiert, wenn die Rechenelemente im zweiten Modus operieren, und daß es die initiierten DMA-Übertragungen ausführt, wenn die Rechenelemente im ersten Modus operieren.
  • Das System kann die Rechenelemente synchronisieren, indem Inhalte des Speichers eines ersten Computerelements in den Speicher eines zweiten Computerelements kopiert werden und die Prozessoren des ersten und zweiten Rechenelements so rückgesetzt werden, daß die Speicher der Rechenelemente nicht beeinflußt werden.
  • Die Rechenelemente können in Reaktion auf einen Interrupt von dem ersten Betriebsmodus in den zweiten Betriebsmodus wechseln. Beispielsweise kann der Interrupt ein Operationszähler-Interrupt sein, der nach dem Auftreten einer festgelegten Anzahl von Taktzyklen, wie Taktzyklen des Prozessors oder Taktzyklen des Busses, von dem Rechenelement erzeugt wird. Der Interrupt kann auch nach der Ausführung einer festgelegten Anzahl von Anweisungen erzeugt werden. Wenn die Rechenelemente Multiprozessor-Rechenelemente mit Primärprozessoren und einem oder mehreren Sekundärprozessoren sind, kann der Primärprozessor so konfiguriert sein, daß er in Reaktion auf den Interrupt den Betrieb der Sekundärprozessoren stoppt.
  • Jedes Rechenelement kann während des Wechsels von dem zweiten Betriebsmodus in den ersten Betriebsmodus einen Interrupt erzeugen. Dieser Interrupt dient dazu, die Verarbeitung durch das Rechenelement auf eine Taktgabestruktur des Rechenelements auszurichten. Typischerweise wird der Interrupt mit einem Taktgeber synchronisiert, der die niedrigsten Frequenzen der Taktgabestruktur hat.
  • Das System kann Ein-/Ausgabevorgänge durch die Rechenelemente zu dem Controller umleiten. Das System kann ebenfalls einen zweiten Controller umfassen, der mit dem ersten Controller und den beiden Rechenelementen verbunden ist. Der erste Controller und ein erstes Rechenelement können an einem ersten Ort und der zweite Controller und das zweite Rechenelement können an einem zweiten Ort angeordnet sein, wobei in diesem Fall das System auch eine Übertragungsverknüpfung umfassen kann, die den ersten Controller mit dem zweiten Controller, den ersten Controller mit dem zweiten Rechenelement und den zweiten Controller mit dem ersten Rechenelement verbindet. Der erste Ort kann mehr als 5 Meter, mehr als 100 Meter oder sogar einen Kilometer oder mehr von dem zweiten Ort entfernt sein.
  • Ein Vorteil der Herstellung eines fehlerrobusten/fehlertoleranten SMP-Systems unter Verwendung von Replikation liegt darin, daß auf dem System Standard- Anwendersoftware und ein Standard-Betriebssystem laufen können, wie das Windows NT-Betriebssystem, das von Microsoft Corporation erhältlich ist. Außerdem kann das System dies unter Verwendung von der Industrienorm entsprechenden Prozessoren und Motherboards tun, z. B. Motherboards, die auf Prozessoren der Pentium-Serie beruhen, die von Intel Corporation erhältlich sind.
  • Andere Merkmale und Vorteile werden aus der folgenden Beschreibung einschließlich der Zeichnungen und aus den Ansprüchen ersichtlich.
  • Beschreibung der Zeichnungen
  • Fig. 1 und 2 sind Blockdiagramme eines fehlerrobusten/fehlertoleranten Computersystems mit einem Prozessor.
  • Fig. 3 ist ein Blockdiagramm eines fehlerrobusten/fehlertoleranten Multiprozessor-Computersystems.
  • Fig. 4 ist ein Blockdiagramm eines Motherboards.
  • Fig. 5 ist ein Flußdiagramm eines Vorgangs, der durch das System von Fig. 3 implementiert wird.
  • Fig. 6 ist ein Blockdiagramm einer PCI-Schnittstelle.
  • Fig. 7 ist ein Flußdiagramm eines Vorgangs, der durch das System von Fig. 3 implementiert wird.
  • Fig. 8 ist ein Blockdiagramm eines Systems, das zwei Multiprozessor-Rechenelemente und einen Eingabe/Ausgabeprozessor hat.
  • Fig. 9A und 9B sind ein Flußdiagramm eines Vorgangs, der durch das System von Fig. 8 implementiert wird.
  • Ausführliche Beschreibung
  • Die unten beschriebenen fehlertoleranten Systeme emulieren voll phasenverbundene Vorgänge multipler Instanzen eines Rechenelements. Dies steht im Gegensatz zu herkömmlichen Systemen, bei denen multiple Instanzen eines Rechenelements im Anweisungs-Lockstep operierten, wie das Endurance 4000-System, das von Marathon Technologies Corporation in Boxboro, Massachusetts, erhältlich ist. Die Anweisungs-Lockstep-Operation tritt auf, wenn multiple Instanzen eines Rechenelements dieselbe Sequenz von Anweisungen in derselben Reihenfolge ausführen. Eine voll phasenverbundene Operation, die auch Takt-Lockstep-Operation genannt werden kann, tritt auf, wenn multiple Instanzen eines Rechenelements dieselbe Sequenz von Anweisungen in derselben Reihenfolge ausführen, wobei jede Anweisung durch jede Instanz des Rechenelements in demselben Taktzyklus ausgeführt wird.
  • Bei dem Endurance 4000-System operieren die Instanzen eines Rechenelements in einem Anweisungsstrom-Lockstep. Jedes Rechenelement führt dieselbe Sequenz von Instruktionen aus, bevor eine Ausgabe erfolgt. Die zur Ausführung des Anweisungsstroms benötigte Zeit ist unterschiedlich aufgrund der unkontrollierten Geschichte jedes Rechenelements. Beispielsweise können Caches, Tabellen- Vorschau-Puffer, Sprungvorhersage-Logik, spekulative Ausführungs-Logik und Ausführungs-Pipelines der Rechenelemente unterschiedliche Initialwerte haben, die, obwohl die ausgeführten Anweisungsströme gleich sind, zu unterschiedlichen Ausführungszeiten führen können.
  • Die Anweisungs-Lockstep-Operation kann zu Ausfällen führen, wenn die Rechenelemente SMP-Server sind. Bei einem solchen System hat jedes Rechenelement multiple Prozessoren, jeder mit seinem eigenen Strom von Anweisungen. Die Ströme von Anweisungen gleichen sich bezüglich gemeinsamer Ressourcen aus. Dieser Ausgleich muß für redundante Aktivität bei beiden Rechenelementen identisch gelöst werden. Die Anweisungs-Lockstep-Operation bietet keine ausreichend strenge Kontrolle über die Prozessoren und den Speicher, um dieselbe Ausgleichs- Lösung bei beiden Rechenelementen zu garantieren.
  • Die Takt-Lockstep-Operation kann erreicht werden, indem ein gewöhnlicher Oszillator verwendet wird, um für alle Instanzen des Rechenelements Taktgeber zur Verfügung zu stellen. Solch eine Implementation kann jedoch ungeeignet für einen fehlertoleranten Vorgang sein, da sie eine einzige Komponente enthält, den gewöhnlichen Oszillator, dessen Ausfall einen Ausfall des gesamten Systems zur Folge hat.
  • Die emulierte Takt-Lockstep-Operation vermeidet diese Einzelursache eines Ausfalls und wird durch die unten beschriebene Technik erreicht. Die emulierte Takt- Lockstep-Operation bietet den wesentlichen zusätzlichen Vorteil, daß sie es ermöglicht, die verschiedenen Instanzen eines Rechenelements in Abständen von bis zu einem Kilometer oder mehr anzuordnen.
  • Ein fehlertolerantes Nicht-SMP-System mit emuliertem Takt-Lockstep ist unten beschrieben. Auf diese Beschreibung folgt die Beschreibung eines fehlertolernaten SMP-Systems, bei dem Replikation und emulierte Takt-Lockstep-Operation verwendet werden. Bei beiden Systemen besteht der Grundansatz in der Schaffung eines Systems, bei dem multiple Instanzen eines Rechenelements in genau den gleichen Status initialisiert werden und dann genau die gleichen Eingabe-Stimuli von einem synchronen Eingabe-/Ausgabe-Subsystem erhalten. Dies führt dazu, daß jede Instanz zu genau dem gleichen Ergebnis kommt.
  • Um eine fehlertolerante Nicht-SMP-System-Implementation (mit einem Prozessor) zu einer fehlerrobusten/fehlertoleranten SMP-Implementation aufzuwerten, wird jeder Prozessor durch mehrere Prozessoren und eine Ausgleichseinheit ersetzt. Jedesmal, wenn ein Prozessor Zugriff auf etwas außerhalb seiner internen Cache (z. B. den Speicher oder Eingabe/Ausgabe) braucht, verwendet der Prozessor die Ausgleichseinheit, um ausgleichenden Zugriff auf den internen Bus zu erhalten, der die Prozessoren miteinander verbindet. Vorausgesetzt, daß die Ausgleichseinheiten Motoren mit finitem Status sind, die in denselben Status initialisiert wurden, folgen sie derselben Ausgleichssequenz, solange die Prozessoren richtig funktionieren.
  • Das einprozessorige (Nicht-SMP)-System
  • Fig. 1 stellt ein fehlertolerantes Nicht-SMP-System 100 dar, das eine Takt- Lockstep-Operation emuliert. Im allgemeinen führen alle Computer zwei Grundvorgänge aus: (1) das Verändern und Umwandeln von Daten und (2) das Bewegen der Daten in Massenspeicher, Netzwerke und andere Eingabe-/Ausgabe-Einrichtungen und aus diesen heraus. Das System 100 teilt diese Funktionen sowohl logisch als auch physisch zwischen zwei separaten Prozessoren auf. Zu diesem Zweck umfaßt jede Hälfte des Systems 100, die Tupel genannt wird, ein Rechenelement 105 und einen Eingabe-/Ausgabe-Prozessor 110. Das Rechenelement 105 verarbeitet Anwendersoftware und Betriebssysteme. Eingabe-/Ausgabe-Anforderungen, die von dem Rechenelement 105 erzeugt werden, werden zu dem Eingabe-/Ausgabe- Prozessor 110 umgeleitet. Diese Umleitung wird auf der Ebene des Einrichtungsantriebs implementiert. Der Eingabe-/Ausgabe-Prozessor 110 stellt Eingabe-/Ausgabe- Ressourcen zur Verfügung, darunter Eingabe-/Ausgabe-Verarbeitung, Datenspeicherung und die Möglichkeit der Netzwerkverbindung. Der Eingabe-/Ausgabe-Prozessor 110 steuert auch die Synchronisation der Rechenelemente.
  • Das System 100 ist insofern fehlertolerant, als es für den Verwender weiter nachvollziehbar operiert, wenn ein einziger Hardwareausfall auftritt. Das System 100 emuliert ein herkömmliches Rechenumfeld, indem es dieses in zwei Komponenten aufteilt. Das Rechenelement 105 führt alle Rechenbefehle für das Betriebssystem und alle Anwendungen aus. Der Eingabe-/Ausgabe-Prozessor 110 bedient alle Eingabe-Ausgabe-Einrichtungen. Dadurch führt der Eingabe-/Ausgabe-Prozessor alle diejenigen asynchronen Vorgänge aus, die mit dem Computer in Beziehung stehen, während das Rechenelement alle synchronen Rechenvorgänge ausführt.
  • Um die für die Fehlertoleranz notwendige Redundanz zu erzeugen, umfaßt das System 100 wenigstens zwei Rechenelemente 105 und wenigstens zwei Eingabe-/Ausgabe-Prozessoren 110. Die beiden Rechenelemente 105 operieren im Lockstep, während die beiden Eingabe-/Ausgabe-Prozessoren 110 lose miteinander verbunden sind. Die Eingabe-/Ausgabe-Prozessoren 110 geben an beide Rechenelemente 105 genau dieselben Daten an einem kontrollierten Ort in den Anweisungsströmen der Rechenelemente. Die Eingabe-/Ausgabe-Prozessoren prüfen, daß die Rechenelemente dieselben Eingabe-/Ausgabe-Vorgänge auslösen und dieselben Ausgabedaten zur selben Zeit produzieren. Die Eingabe-/Ausgabe-Prozessoren überprüfen sich auch gegenseitig darauf, ob die geforderte Eingabe-/Ausgabe- Aktivität richtig vollendet wird.
  • Das System 100 verwendet einen softwareorientierten Ansatz bei einer Konfiguration, die auf kostengünstigen, der Industrienorm entsprechenden Prozessoren beruht. Beispielsweise können die Rechenelemente 105 und die Eingabe-/Ausgabe- Prozessoren 110 unter Verwendung von Pentium Pro-Prozessoren implementiert werden, die von Intel Corporation erhältlich sind. Das System kann mit nicht modifizierten, der Industrienorm entsprechenden Betriebssystemen betrieben werden, wie dem Windows NT-Betriebssystem, das von Microsoft Corporation erhältlich ist, oder mit der Industrienorm entsprechenden Anwendersoftware. Dadurch ist es möglich, ein fehlertolerantes System durch Kombination von fertigen, auf Intel Pentium Pro basierenden Servern von verschiedenen Herstellern zu konfigurieren, was ein fehlertolerantes oder katastrophentolerantes System mit niedrigen Anschaffungs- und Unterhaltskosten ergibt.
  • Jedes Rechenelement 105 umfaßt einen Prozessor 115, einen Speicher 120 und eine Schnittstellenkarte 125 (auch Marathon-Schnittstellenkarte oder MSK genannt). Die Schnittstellenkarte 125 umfaßt Antriebe für eine simultane Kommunikation mit zwei Eingabe-/Ausgabe-Prozessoren und für eine Vergleichs- und Testlogik, die sicherstellt, daß die von den beiden Eingabe-/Ausgabe-Prozessoren erhaltenen Ergebnisse identisch sind. Bei dem fehlertoleranten System 100 ist die Schnittstellenkarte 125 jedes Rechenelements 105 durch Hochgeschwindigkeits-Links 130, wie faseroptische Links, mit Schnittstellenkarten 125 der beiden Eingabe-/Ausgabe- Prozessoren 110 verbunden. Die Schnittstellenkarten 125 können als auf PCI beruhende Adapter implementiert werden.
  • Jeder Eingabe-/Ausgabe-Prozessor 110 umfaßt einen Prozessor 115, einen Speicher 120, eine Schnittstellenkarte 125 und Eingabe-/Ausgabe-Adapter 135 zur Verbindung mit Eingabe-/Ausgabe-Einrichtungen, wie eine Festplatte 140 und ein Netzwerk 145. Wie oben angegeben ist die Schnittstellenkarte 125 jedes Eingabe- /Ausgabe-Prozessors 110 durch Hochgeschwindigkeits-Links 130 mit den Schnittstellenkarten 125 der beiden Rechenelemente 105 verbunden. Zusätzlich ist ein Hochgeschwindigkeits-Link 150, wie ein privates Ethernet-Link, zwischen den beiden Eingabe-/Ausgabe-Prozessoren 110 vorgesehen.
  • Alle Eingabe-Ausgabe-Anforderungen von den Rechenelementen 105 werden an die Eingabe-/Ausgabe-Prozessoren 110 zur Behandlung umgeleitet. Der Eingabe- /Ausgabe-Prozessor 110 läuft mit spezieller Software, die alle Fehlerbehandlungs-, Diskettenspiegelungs-, System-Management- und Resynchronisierungsprogramme behandelt, die von dem System 100 gefordert werden. Durch Verwendung eine Multitasking-Betriebssystems, wie Windows NT, können auf dem Eingabe-/Ausgabe- Prozessor 110 andere, nicht fehlertolerante Anwendungen laufen. Im allgemeinen kann auf einem Rechenelement ein Windows-NT-Server als Betriebssystem laufen, während, abhängig davon, wie der Eingabe-/Ausgabe-Prozessor verwendet werden soll, auf einem Eingabe-/Ausgabe-Prozessor entweder ein Windows NT Server oder eine Windows NT Workstation als Betriebssystem laufen kann.
  • Die beiden Rechenelemente 105 laufen mit Lockstep-Steuersoftware, die auch Quantensynchronisationssoftware genannt wird, und führen das Betriebssystem und die Anwendungen in emuliertem Takt-Lockstep aus. Eine Diskettenspiegelung findet statt, indem Einträge auf den Disketten 140, die mit jedem Eingabe- /Ausgabe-Prozessor in Verbindung stehen, dupliziert werden. Sollte eines der Rechenelemente 105 versagen, hält das andere Rechenelement 105 das System in Betrieb, wobei nur eine Pause von wenigen Millisekunden entsteht, um das ausgefallene Rechenelement 105 aus der Konfiguration zu entfernen. Das ausgefallene Rechenelement 105 kann dann physisch entfernt, repariert, wieder angeschlossen und eingeschaltet werden. Das reparierte Rechenelement wird dann automatisch in die Konfiguration zurückgebracht, indem der Status des laufenden Rechenelements über die Hochgeschwindigkeits-Links auf das reparierte Rechenelement übertragen wird und indem resynchronisiert wird. Die Stadien des Betriebssystems und der Anwendungen werden während der wenigen Sekunden, die benötigt werden, um die beiden Rechenelemente zu synchronisieren, aufrechterhalten, um die Auswirkung für Systemverwender so gering wie möglich zu halten.
  • Wenn ein Eingabe-/Ausgabe-Prozessor 110 versagt, hält der andere Eingabe/Ausgabe-Prozessor 110 das System weiter in Betrieb. Der ausgefallene Eingabe- /Ausgabe-Prozessor kann dann physisch entfernt, repariert und eingeschaltet werden. Da die Eingabe-/Ausgabe-Prozessoren nicht im Lockstep laufen, kann das reparierte System einen vollen Neustart des Betriebssystems durchlaufen und kann dann resynchronisiert werden. Nach der Resynchronisation tritt der reparierte Eingabe-/Ausgabe-Prozessor automatisch wieder in die Konfiguration ein, und die gespiegelten Disketten werden im Hintergrund-Modus über der privaten Verbindung 150 zwischen den Eingabe-/Ausgabe-Prozessoren zurückgespiegelt. Ein Versagen einer der gespiegelten Disketten wird mit demselben Verfahren behandelt.
  • Die Verbindungen zum Netzwerk 145 sind ebenfalls voll redundant. Netzwerkverbindungen von jedem Eingabe-/Ausgabe-Prozessor 110 werden mit derselben Adresse gestartet. Nur eine Netzwerkverbindung darf Nachrichten übermitteln, während beide Nachrichten empfangen dürfen. So überwacht jede Netzwerkverbindung durch das private Ethernet die andere. Sollte eine der beiden Netzwerkverbindungen versagen, entdecken die Eingabe-/Ausgabe-Prozessoren den Ausfall, und die verbleibende Netzwerkverbindung trägt die Last. Die Eingabe-/Ausgabe-Prozessoren benachrichtigen den System-Manager im Fall eines Ausfalls, so daß eine Reparatur eingeleitet werden kann.
  • Während Fig. 1 beide Verbindungen an einem einzigen Netzwerksegment zeigt, ist dies nicht unbedingt erforderlich. Die Netzwerkverbindung jedes Eingabe/Ausgabe-Prozessors kann auf einem anderen Segment desselben Netzwerks liegen. Das System beherbergt auch multiple Netzwerke, jedes mit seinen eigenen redundanten Verbindungen. Die Ausweitung des Systems auf Katastrophentoleranz erfordert lediglich, daß die Verbindung zwischen den Tupeln eine optische Faser oder eine Verbindung mit kompatibler Geschwindigkeit ist. Bei solchen Verbindungen können die Tupel in Entfernungen von einem Kilometer oder mehr angeordnet sein. Da die Rechenelemente über diese Entfernung synchronisiert sind, ist der Ausfall einer Komponente oder einer Serverstation für den Verwender erkennbar.
  • Fig. 2 stellt eine zusammenfassende Ansicht des Systems 100 von Fig. 1 dar. Das System umfaßt redundante Rechenelemente 105 und Eingabe-/Ausgabe- Prozessoren 110. Jedes Rechenelement 105 ist zuständig für alle Rechentätigkeit und kann unter Verwendung eines der Industrienorm entsprechenden Motherboards implementiert werden. Jeder Eingabe-/Ausgabe-Prozessor 110 ist zuständig für den Zugang zu Eingabe-Ausgabe-Vorgängen und für die Systemsteuerung. Die Eingabe- /Ausgabe-Prozessoren laufen asynchron zueinander und überprüfen, daß die Rechenelemente dieselben Vorgänge in derselben Reihenfolge ausführen. Die Eingabe-/Ausgabe-Prozessoren verfolgen auch die Fertigstellung der Eingabe und Ausgabe, um sicherzustellen, daß keine Eingabe/Ausgabe verlorengeht.
  • Die Rechenelemente erzeugen dieselben Ausgaben in genau derselben Abfolge und laufen in emuliertem Takt-Lockstep, obwohl die Rechenelement-Taktgeber asynchron zueinander sind. Die Rechenelemente werden in denselben Zustand initialisiert und werden zu genau derselben Zeit mit konsistenten Eingaben gefüttert. Die Rechenelemente werden in regelmäßigen Abständen neu ausgerichtet, wobei ein selbsterzeugter Interrupt erzeugt wird, der mit dem Auftreten einer bestimmten Anzahl von Taktzyklen im Zusammenhang steht (z. B. 100.000 Taktzyklen) und als periodischer Interrupt ("PI") bezeichnet wird. Im Gegensatz dazu verwendete das herkömmliche Endurance 4000-System Pls, die mit der Vollendung eine bestimmten Anzahl von Anweisungen im Zusammenhang stand. Alle Eingaben an die Rechenelemente werden entweder in einem Ausgabe-Fenster ausgeführt, oder nach Vollendung einer bestimmten Zahl von Anweisungen. Diese beiden Punkte werden garantiert an demselben Punkt der Anweisungsströme der Rechenelemente erreicht. Der bei dem Endurance 4000-System verwendete Ansatz ist in den US-Patenten 5,600,784 und 5,615,403 beschrieben.
  • Das Multiprozessor-(SMP)-System
  • Fig. 3 stellt ein fehlerrobustes/fehlertolerantes, symmetrisches Multiprozessor- ("SMP")-System 300 dar. Jedes Rechenelement 305 des Systems 300 umfaßt eine Sammlung von Prozessoren 310, die durch einen gemeinsamen Prozessorbus 315 und eine Ausgleichseinheit 320 verbunden sind. Die Prozessoren verwenden den Bus 315 und die Ausgleichseinheit 320, um auf den gemeinsamen Speicher 325 zuzugreifen, und um durch eine Schnittstellenkarte 335 und Hochgeschwindigkeits- Datenlinks 340 auf zwei Eingabe-/Ausgabe-Prozessoren 330 zuzugreifen.
  • Die Eingabe-/Ausgabe-Prozessors 330 arbeiten genauso wie Eingabe- /Ausgabe-Prozessoren 110 des Systems 100. So behandeln die Eingabe-/Ausgabe- Prozessoren alle Eingabe-/Ausgabe-Programmanforderungen der Prozessoren 310 und laufen mit spezieller Software, die alle Fehlerbehandlungs-, Diskettenspiegelungs-, System-Managements- und Resynchronisierungsprogramme behandelt, die das System 300 erfordert.
  • Ein Prozessor 310 (als Prozessor 310a definiert) jedes Rechenelements 305 dient als Primärprozessor und läuft mit Lockstep-Steuersoftware zusätzlich dazu, daß er ein Betriebssystem und Anwendungen in emuliertem Takt-Lockstep mit dem anderen Rechenelement ausführt. Die übrigen Prozessoren in jedem Rechenelement 305 führen das Betriebssystem und Anwendungen in emuliertem Takt-Lockstep mit dem anderen Rechenelement aus.
  • Fig. 4 zeigt ein Motherboard 400 zur Verwendung in einem Rechenelement 305 des Systems 300, das zwei oder mehr Prozessoren 310 umfaßt. Jeder Prozessor kann mit einer Taktfrequenz von beispielsweise 300 MHz oder 350 MHz arbeiten. Die Prozessoren 310 sind miteinander verbunden und mit der Ausgleichseinheit 320 durch den Bus 315 verbunden, der auch als Prozessorbus oder Vorderseitenbus ("VSB") bezeichnet wird. Der VSB arbeitet typischerweise mit einer Taktfrequenz von 100 MHz. Die Ausgleichseinheit 320 wird üblicherweise als Nordbrücke bezeichnet, da sie als Brücke von dem Prozessorbus 315 zum Speicher 325 und zum PCI-Bus 705 dient. Der PCI-Bus 705 ist typischerweise ein 32-Bit-Bus, der mit 33 MHz arbeitet, oder ein 64-Bit-Bus, der mit 66 MHz arbeitet. Die Schnittstellenkarte 335 ist als PCI-Einrichtung implementiert, die mit dem PCI-Bus 705 verbunden ist.
  • Der PCI-Bus 705 ist auch mit einer anderen Komponente verbunden, die üblicherweise als Südbrücke 710 bezeichnet wird. Die Südbrücke umfaßt einen fortgeschrittenen peripheren Interrupt-Controller ("FPIC") 715, die Interrupte für die Prozessoren 310 auf einem FPIC-Bus 720 bietet. Die Prozessoren 310 umfassen ihre eigenen FPIC 725, die die Interrupte aufnehmen. Der FPIC-Bus kann beispielsweise ein 16.6-MHz-Bus sein.
  • Das Motherboard 700 kann unter Verwendung eines der Industrienorm entsprechenden Motherboards implementiert werden. In diesem Fall kann das Motherboard 700 auch eine Anzahl von Komponenten enthalten, die, obwohl sie der Norm des Motherboards entsprechen, nicht von dem System 300 verwendet werden. Zu diesen Komponenten gehört eine Videokarte 730, die über einen AGP-Bus 735 (oder durch den PCI-Bus) mit der Nordbrücke 320 verbunden ist; einen oder mehrere SCSI-Controller 740, die mit dem PCI-Bus 705 verbunden sind, eine oder mehrere PCI-Einrichtungen 745, die mit dem PCI-Bus 705 verbunden sind, einen IDE- Laufwerks-Controller 750, der mit der Südbrücke 710 verbunden ist, einen ISA- (16 Bit, 8 MHz) oder EISA- (32 Bit, 8 MHz) Bus 755, der mit der Südbrücke 710 verbunden ist, eine oder mehr ISA- oder EISA-Einrichtungen 760, die mit dem Bus 755 verbunden sind, und einen Super-Eingabe-/Ausgabe-Controller 765, der mit dem Bus 755 verbunden ist, um die Tastatur, die Maus und das Diskettenlaufwerk zu unterstützen, und parallele und serielle Anschlüsse. Diese Komponenten, falls sie vorhanden sind, werden nicht von dem Rechenelement 305 verwendet.
  • Das herkömmliche System Endurance 4000 von Marathon bot eine fehlertolerante Struktur, bei der Prozessoren in Lockstep gehalten wurden, während die Zeitversetzung vernachlässigt wurde. Im Prinzip war der Zeitunterschied zwischen den Prozessoren unwichtig, vorausgesetzt, daß die Asynchronität zwischen den Prozessoren den Anweisungs-Lockstep nicht beeinflußte. Speicheraktualisierung und DMA- Dialoge, die keine Auswirkung auf den Lockstep der Prozessoren hatten, beeinflußten jedoch die zeitliche Asynchronität. Eien Videoverarbeitung hatte sowohl eine Zeit- als auch eine Anweisungskomponente. Es wurde sorgfältig darauf geachtet, daß die Video- und Quantenverarbeitung keine Divergenz bezüglich der Anweisungen oder der Daten hervorriefen.
  • Beim Fortschritt von einer Anordnung mit nur einem Prozessor zu einer SMP- Anordnung beeinflußt das Hinzufügen von einem oder mehreren Prozessoren bei jedem Rechenelement die Ausführung sowohl bezüglich der Zeit als auch der Anweisungen. Die multiplen Prozessoren wirken direkt und indirekt zusammen. Der direkte Dialog findet durch die SMP-Merkmale statt, die von den Prozessoren zur Verfügung gestellt werden, wie z. B. die HALT-Anweisung, und Interprozessor-Interrupte, die von dem Intel Pentium Pro-Prozessor zur Verfügung gestellt werden. Der indirekte Dialog geschieht durch formale und nicht formale Zeichenträger-Mechanismen. Vorausgesetzt, daß die Taktgabestruktur und der Prozessorzustand ausreichend aufeinander abgestimmt sind, richten sich diese Zeichenträger sich selbst aus.
  • Wiederum Fig. 3 zeigt, daß das System 300, wie das System 100, Fehlertoleranz durch eine Taktphasen-Lockstep-Operation durch die beiden Rechenelemente erreicht. Wenn zwei Rechenelemente im Taktphasen-Lockstep sind und alle Eingaben an die Rechenelemente synchron gesteuert werden, führen die Rechenelemente genau denselben Anweisungsstrom zu genau derselben Zeit aus. Dieses Modell umgeht die Notwendigkeit, bei einem SMP-System alle Vorgänge, die von Anwendungen verwendet werden, zu verstehen und zu steuern.
  • Wie oben erwähnt, kann der Effekt der Rechenelemente im Taktphasen- Lockstep hervorgerufen werden, ohne daß die Taktgeber der Rechenelemente tatsächlich miteinander verbunden sein müssen. Der Taktphasen-Lockstep garantiert, daß jede Operation eines Rechenelements mit genau derselben Taktausrichtung bei jedem Rechenelement beginnt, ohne daß etwas getan werden muß, um diese Ausrichtung beizubehalten, wenn die anfängliche Verbindung hergestellt ist. Der Effekt der Taktausrichtung der Rechenelemente kann durch Verwendung asynchroner Rechenelemente bewirkt werden, vorausgesetzt, daß eine Wiederausrichtung durchgeführt wird, wenn ein Vorgang auftritt, der eine Fehlausrichtung der Rechenelemente verursachen könnte. Um den Effekt der Taktausrichtung der Rechenelemente zu erzielen, steuert das System 300 die Rechenelemente so, daß sie sich wie Automaten verhalten, synchronisiert die Rechenelemente auf dieselben Anfangsbedingungen, verhindert eine Divergenz der Rechenelemente aufgrund von asynchronem Verhalten und richtet die Rechenelemente periodisch neu aus.
  • Die Rechenelemente arbeiten prinzipiell in zwei Modi. Der erste Modus wird für eine normale Verarbeitung von Anwendungssoftware und Betriebssystemen verwendet. Bei diesem Modus arbeiten die Rechenelemente in emuliertem Takt- Lockstep. Der zweite Modus wird während der Neuausrichtung der Rechenelemente und anderer Vorgänge auf Systemebene verwendet. Bei diesem Modus arbeiten die Rechenelemente im Anweisungs-Lockstep.
  • 1. Automatisches Verhalten der Rechenelemente
  • Es ist relativ einfach, die beiden Rechenelement-Motherboards auf ein automatisches Verhalten zu beschränken. Es ist nur erforderlich, alle Einrichtungen zu deaktivieren, die nicht reproduzierbare Ereignisse erzeugen, wie Echtzeituhren, und diese unter Verwendung von Software zu emulieren.
  • 2. Initialisierung/Synchronisierung der Rechenelemente
  • Bei einem herkömmlichen nicht fehlertoleranten SMP-System werden alle Prozessoren gleichzeitig aktiv. Danach werden zu einem Zeitpunkt im Initialisierungsvorgang alle Prozessoren außer dem Primärprozessor deaktiviert. Nachdem der Primärprozessor das System eingerichtet hat, werden die anderen Prozessoren aktiviert, und die normale SMP-Tätigkeit beginnt.
  • Für die Fehlertoleranz wird der Aktivierungsvorgang sorgfältig ausgeführt, da er die relative zeitliche Abfolge zwischen den Prozessoren bestimmt. Insbesondere wird die Systemausrichtung auf einen bekannten Zustand eingestellt. Dies erfordert, daß die Speicheraktualisierung, die PCI-Taktgabe, die Interrupt-Taktgabe, der Interrupt-Ausgleich, der CPU-Ausgleich, Eingabe-/Ausgabe-Interaktionen und alle CPU- Caches in einem bekannten Zustand sind.
  • Die CPUs werden mit genau derselben Zustandsinformation gestartet. Dies wird durch einen Synchronisierungsvorgang erreicht. Insbesondere werden die Speicherinhalte des laufenden Rechenelements auf das synchronisierende Rechenelement hinüberkopiert. Nachdem die Speicherinhalte kopiert wurden, wird der Prozessorzustand übertragen. Beide Prozessoren führen dann eine Sequenz vom Typ Wiederherstellung nach Stromausfall aus und stellen ihren Kontext aus dem Speicherbild wieder her.
  • Das System mit nur einem Prozessor reagiert nicht auf den Inhalt von Cache, Sprungvorhersage und Übertragungspuffer. Ein SMP-System reagiert auf diese. Eine Technik zur Initialisierung dieser Subsysteme besteht in der Initialisierung einer vollständigen Rücksetzung des Prozessors, was es erfordern kann, daß ein handelsübliches BIOS die Neustart-Zeit begrenzt. Eine andere Technik ist das Ausführen eines Algorithmus, der bekannte Werte in diese Subsysteme zwingt.
  • Wie Fig. 5 zeigt, wird die Initialisierung/Synchronisierung der Rechenelemente gemäß einem Verfahren 500 durchgeführt. Zunächst wird ein Rechenelement mit dem Betriebssystem, Anwendersoftware und Systemsteuerungssoftware geladen (Schritt 505). Dieses Rechenelement wird als das aktive Rechenelement bezeichnet, während das andere Rechenelement als synchronisierendes Rechenelement bezeichnet wird. Die Aktivierung des aktiven Rechenelements umfaßt typischerweise eine Deaktivierung aller Prozessoren außer dem Primärprozessor (Schritt 510).
  • Als nächstes wird der interne Zustand des aktiven Rechenelements in dem Speicher 325 gespeichert (Schritt 515). Wenn die anderen Prozessoren deaktiviert sind, umfaßt der interne Zustand nur den internen Zustand des Primärprozessors. Interne Werte, die in der Ausgleichseinheit 320 und der Schnittstellenkarte 335 gespeichert sind, können auch im Speicher gespeichert werden. Der Inhalt des Speichers 325 des aktiven Rechenelements wird dann auf das synchronisierende Rechenelement kopiert (Schritt 520).
  • Nachdem der Zustand des aktiven Rechenelements übertragen wurde, führen beide Rechenelemente einen Rücksetzungsvorgang aus (Schritt 525). Der Rücksetzungsvorgang löscht den internen Zustand jedes Prozessors 310 einschließlich aller Caches, läßt aber den Speicher 325 unversehrt, der den gespeicherten Zustand des aktiven Rechenelements enthält.
  • Nach Ausführung des Rücksetzungsvorgangs warten die Rechenelemente auf einen Software-Interrupt (Schritt 530). Der Interrupt erreicht beide Rechenelemente gleichzeitig. Nach Erhalt des Interrupts (Schritt 535), lädt der Primärprozessor jedes Rechenelements den gespeicherten Zustand aus dem Speicher (Schritt 540) und beginnt eine emulierte Takt-Lockstep-Aktivität (Schritt 545). Diese Aktivität kann eine Aktivierung der anderen Prozessoren des Rechenelements umfassen (Schritt 550).
  • Im allgemeinen erfordern es die oben beschriebenen Mechanismen, daß alle Motherboard-Taktgeber eine gemeinsame Grundfrequenz haben, und weiterhin, daß die Taktgeber durch Softwaresteuerung in ihrer Phase ausgerichtet werden können. Zusätzlich muß das Motherboard in der Lage sein, alle Prozessorzustände durch Softwaresteuerung zu löschen, ohne daß eine vollständige Motherboard- Rücksetzung erforderlich ist, wodurch auch der Speicher 325 gelöscht würde. Dies kann durch einen Hardware-Rücksetzungs-Mechanismus erreicht werden, der eine Rücksetzung des Prozessors ohne Rücksetzung der Eingabe-/Ausgabe- Einrichtungen und des Speichers ermöglicht. Eine vergleichsweise kompliziertere Art, dies zu erreichen, besteht in einer BIOS-Modifikation, um eine Wiederherstellung von Verbindungen zum Speicher und zur Eingabe/Ausgabe nach einer vollständigen Rücksetzung des Motherboards zu ermöglichen. Dies erfordert, daß ein Prozessor einen Bildschirmausdruck von allen Tabellen und anderen nötigen Parametern anfertigt, bevor die Rücksetzung durchgeführt wird.
  • 3. Steuerung der Divergenz von Rechenelement-Stimuli aufgrund von asynchronem Verhalten
  • Es gibt zwei Grundursachen für asynchrones Verhalten: asynchrone Taktgeber und nicht synchronisierte Ereignisse. Asynchrone Taktgeber sind in Video- Controllern, Echtzeituhren und anderen Eingabe-/Ausgabe-Einrichtungen zu finden. Sie sind qua Definition ungenaue Mechanismen, die zwischen replizierten fehlerrobusten/fehlertoleranten Computern nicht tolerierbar sind.
  • Eingabe-/Ausgabe-Anforderungen der Rechenelemente werden von den Eingabe-/Ausgabe-Prozessoren 330 abgefangen und behandelt, und periodische Interrupte werden verwendet, um die Echtzeituhren der Rechenelemente periodisch zu aktualisieren. Periodische Interrupte sind Interrupte, die nach Ausführung einer festgelegten Anzahl von Taktzyklen erzeugt werden.
  • Das SMP-System 300 ermöglicht eine völlig synchrone Eingabe/Ausgabe. Dies bedeutet, daß alle Zugriffe auf die Schnittstellenkarte 335, die ein Rechenelement 305 mit den Eingabe-/Ausgabe-Prozessoren 330 verbinden, auf reproduzierbare Art geschehen müssen. Dies erfordert eine zuverlässige zeitliche Abfolge, wie von dem PCI-Bus aus gesehen, ein DMA, das auf ein von der CPU steuerbares Ereignis ausgerichtet ist, eine Datenverfügbarkeit, die synchron mit dem CPU- Anweisungsstrom über alle Instanzen ist, und eine eingeschränkte Verwendung der Abfrageaktivität.
  • Die Eingabe und Ausgabe an die Rechenelemente wird durch Software und ein PCI-Schnittstellenmodul der Schnittstellenkarte 335 gesteuert. Fig. 6 zeigt das PCI-Schnittstellenmodul 600. Das Modul 600 umfaßt einen PCI-Abschnitt 605, der synchron mit der Ausgleichseinheit 320 und den Prozessoren 310 des Rechenelements 305 arbeitet. Das Modul 600 umfaßt auch einen Empfängerabschnitt 610 und einen Transmitterabschnitt 615, die synchron mit dem Eingabe-/Ausgabe-Prozessor 330 arbeiten, mit dem sie verbunden sind. Ein Empfängerspeicher 620 und ein Transmissionsspeicher 625 wirken als Schnittstelle zwischen den Abschnitten. Jeder Speicher wirkt als zweiseitig zugänglicher Speicher.
  • Die Übertragung von der asynchronen Zeitabfolge des Eingabe-/Ausgabe- Prozessors zur Rechenelement-Taktgabe geschieht durch Nutzung eines Hardware- Protokolls (Freeze-Protokoll genannt), das von der Schnittstellenkarte 335 implementiert wird. Bei einer SMP-Implementation trägt jede Abfrageaktivität mit der Schnittstellenkarte 335 zu einer asymmetrischen Aktivität zwischen den Rechenelementen 310 bei. Das Freeze-Protokoll sorgt dafür, daß die Daten nicht von einem der Schnittstellen-Speicher übermittelt werden, bevor alle Daten sich im Speicher jedes Rechenelements befinden.
  • Bei der Implementierung des Freeze-Protokolls stoppen die Rechenelemente, die einen identischen Anweisungsstrom verarbeiten, jeweils die Verarbeitung des Anweisungsstroms an einem gemeinsamen Punkt des Anweisungsstroms. Jedes Rechenelement generiert dann eine Freeze-Anforderungs-Nachricht und übermittelt die Freeze-Anforderungs-Nachricht an die Eingabe-/Ausgabe-Prozessoren. Ein Eingabe-/Ausgabe-Prozessor erhält eine Freeze-Anforderungs-Nachricht von einem Rechenelement, wartet auf eine Freeze-Anforderungs-Nachricht von anderen Rechenelementen und erzeugt nach Erhalt einer Freeze-Anforderungs-Nachricht von jedem Rechenelement, das einen identischen Anweisungsstrom verarbeitet, eine Freeze-Reaktions-Nachricht und übermittelt die Freeze-Reaktions-Nachricht an die Rechenelemente. Nach Erhalt einer Freeze-Reaktions-Nachricht von einem Eingabe- /Ausgabe-Prozessor wartet jedes Rechenelement auf die Freeze-Reaktions- Nachrichten von anderen Eingabe-/Ausgabe-Prozessoren, an die eine Freeze- Anforderungs-Nachricht übermittelt wurde, und generiert nach Erhalt einer Freeze- Reaktions-Nachricht von jedem Eingabe-/Ausgabe-Prozessor eine Freeze- Auslösung-Nachricht, übermittelt die Freeze-Auslösungs-Nachricht an die Eingabe- IAusgabe-Prozessoren und nimmt die Verarbeitung des Anweisungsstroms (und die Ubermittlung von Daten aus dem Empfängerspeicher) wieder auf. Die Schnittstellenkarte 335 und das Freeze-Protokoll sind so konfiguriert, daß sie eine Störung der Caches sowie von TLB und BTB beim Intel Pentium Pro-Prozessor vermeiden. Das Freeze-Protokoll wird ausführlicher in dem US-Patent 5,790,197 mit dem Titel "Fehlerbehandlung" diskutiert.
  • Video-Operationen zeigen asynchrones Verhalten aufgrund des Oszillators auf der Videokarte, der nicht mit dem CPU-Taktgeber in Zusammenhang steht. Videosteuerungen werden von diesem Oszillator abgeleitet. Zusätzlich führt der Videoantrieb einen Code aus, der von der Abfrage von Eingabe-/Ausgabe-Registern abhängt. Techniken zur Beseitigung von Asychronien im Zusammenhang mit Video umfassen die Schaffung eines Video-Moduls mit gesicherter Zeitabfolge, eine Umleitung des Videos wie eine andere Eingabe/Ausgabe und die Schaffung eines virtuellen Videomoduls, das die asynchrone Zeitabfolge des tatsächlichen Videomoduls isoliert.
  • Nicht synchronisierte Ereignisse können sogar auftreten, wenn unterschiedliche Takte von einem gemeinsamen Oszillator abgeleitet werden. Beispielsweise kann ein Prozessor-Taktgeber mit 66 MHz geteilt werden, so daß ein PCI-Taktgeber mit 33 MHz abgeleitet wird. Da in diesem Fall der Prozessor-Taktgeber doppelt so schnell ist wie der PCI-Taktgeber, ist jeder zweite Prozessor-Taktzyklus an einem PCI-Zyklus ausgerichtet. Ähnlich wird eine Speicheraktualisierung etwa alle 15 Mikrosekunden ausgelöst, indem der Prozessor-Taktgeber durch 1000 geteilt wird, was bedeutet, daß der Prozessor-Taktgeber einmal pro 1000 Prozessor-Taktzyklen an dem Speicher ausgerichtet wird. Um eine Reproduzierbarkeit zu garantieren, muß jedes Rechenelement mit derselben Ausrichtung dieser normalerweise nicht synchronisierten Elemente begonnen werden.
  • Interrupte müssen ebenfalls so konfiguriert sein, daß sie synchron mit dem Prozessor sind. Dies geschieht durch eine Implementierung des Motherboards, so daß die Interrupt-Taktgabe synchron mit dem PCI-Taktgeber ist, der wie oben beschrieben an dem CPU-Taktgeber ausgerichtet ist.
  • Im allgemeinen verwendete das Endurance 4000-System von Marathon nur einen Interrupt, der auf der Grundlage der Ausführung des Anweisungsstroms hervorgerufen wurde. Der Operationszähler wurde durch den lokalen FPIC dazugeschaltet, um einen Interrupt zu erzeugen, nachdem eine festgelegte Zahl von Anweisungen ausgeführt worden war. Die Auslösung des Interrupts war synchron zu dem Anweisungsstrom, aber die Ausführung war nicht mit Sicherheit synchron. Diese Unsicherheit rührte teilweise von der Wahl eines FPIC-Taktgebers, der synchron zu dem CPU-Taktgeber eingestellt werden kann. Um diese Unsicherheit bei dem System 300 zu beseitigen, werden die Taktgabestruktur des lokalen FPIC und deren Schnittstelle mit dem Prozessor verwendet, um den Interrupt zeitlich neu einzustellen, so daß die Unsicherheit seiner Ausführung beseitigt wird.
  • Bei den meisten der Industrienorm entsprechenden Motherboards geschieht die Speicheraktualisierung synchron zu dem CPU-Taktgeber, aber asynchron zum Anweisungsstrom. Bei diesen Motherboards gibt es keinen direkten Zusammenhang zwischen CPU-Ausführung und Speicheraktualisierung. Eine Speicheraktualisierung verändert die zeitliche Abfolge des Speicherzugriffs zwischen Systemen, sofern nicht mit derselben Ausrichtung in beiden Systemen begonnen wird. Aus diesem Grund wird die Speicheraktualisierung ebenfalls gesteuert. Dies kann durch eine Chipsatz- Modifikation erreicht werden, die einen Eingabe-/Ausgabe-Ort einrichtet, der eine Aktualisierungs-Aktivität in Reaktion auf eine Ablesung durchführt, um eine Aktualisierungs-Ausrichtung von der Software zu erzwingen. Alternativ kann die Ausrichtung aus der Aktualisierungs-Aktivität abgeleitet und für die CPU sichtbar gemacht werden. Als weitere Alternative kann die Aktualisierung um eine festgelegte Anzahl von Zyklen nach Aktivierung der Aktualisierung auftreten.
  • Im Gegensatz zu einem System mit einem Prozessor muß bei dem Multiprozessör-System der Ausgleich des Busses gesteuert werden. Das System mit einem Prozessor kann die Auswirkungen des Busausgleichs durch Ausrichtung der Anweisungsströme ignorieren. Eine Steuerung des Busausgleichs ist nicht nötig, da es keine Kombination des Ausgleichs zwischen einem einzigen Prozessor, dem Speicher und der Eingabe/Ausgabe gibt, die bei einem gut funktionierenden Programm zu einem unterschiedlichen Ergebnis führt, da ein solches Programm keinen gemeinsamen Zugriff auf einen Speicher erlaubt, der von einer anderen Entität geschrieben wird.
  • Diese einfache Regel gilt nicht für Multiprozessor-Systeme. Es gibt Algorithmen, die zwei oder mehr Prozessoren verwenden und es erlauben, daß alle Prozessoran zum Zweck der ungefähren Aufspürung von der Systemmetrik einen einzigen Ort lesen oder beschreiben. Andere Algorithmen erlauben, daß multiple Prozessoren Speicherorte lesen und modifizieren, um ausschließlichen Zugriff auf eine größere Datenstruktur zu erhalten, ohne Busverbindungsstrukturen zu verwenden. So kann jede Änderung der Ausgleichsordnung zwischen Prozessoren eine schwerwiegende Auswirkung auf den Speicherinhalt haben, was der Beschränkung auf Reproduzierbarkeit entgegensteht. Dementsprechend muß ein Multiprozessor-System effektiv den Busausgleich steuern.
  • Ein erster Ansatz zur Steuerung des Bus-Ausgleichs regelt das Verhältnis der Prozessoren zueinander. Dieser Ansatz ist sehr komplex, da jeder interne Cache- Verwendungs-Mechanismus in den Prozessoren das Verhältnis zwischen den Prozessoren an der Bus-Ausgleichs-Grenze beeinflußt.
  • Ein einfacherer Ansatz zur Steuerung des Bus-Ausgleichs besteht in einer Rücksetzung der Prozessoren nach jeder Unterbrechung der Ausführung. Dies vermeidet komplexe Algorithmen, wobei jedoch alle Cache-Verwendungs-Mechanismen effektiv inaktiviert werden, da die Caches bei jeder Rücksetzung geleert werden.
  • Der Bus-Ausgleich ist ein allgemeines Problem bei jedem Bus im System. Der CPU-Cache-Bus, der CPU-Speicher-Bus, der CPU-PCI-Bus und der PCI-ISA-Bus sind von diesem Problem betroffen. Alle diese Busse sind synchron mit dem CPU- Taktgeber, aber jeder wird von einem dividierten Teil hiervon gesteuert. Deshalb muß jeder ausgerichtet werden, um Abweichungen in der Zeitfolge zu beseitigen. Wiederum kann die Ausrichtung abgeleitet oder mit einer Chipsatz-Modifikation steuerbar gemacht werden.
  • Die CPU-Caches verwenden eine pseudo-zufällige Zuordnungsmethode, die durch Zuordnungsanforderungen gesteuert wird. Die Zuordnungsmethode muß ausgerichtet sein, wenn ein Auftreten von Cache-Abweichungen zugelassen wird.
  • DMA-Aktivität beeinflußt den Ausgleich von Systembussen. Der DMA-Motor muß auf der Grundlage der Ausrichtung der Systembusse gestartet und gestoppt werden, um Unsicherheit zu vermeiden. Die MSK verwendet DMA zur Übermittlung von Daten aus dem Speicher des Rechenelements zum PCI-Bus und schließlich zum Eingabe-/Ausgabe-Prozessor. Ein anderer, weniger effizienter Ansatz zur DMA- Bewertung umfaßt ein Anhalten des Prozessors während der DMA.
  • Bei einem Rechenelement, das für eine emulierte Takt-Lockstep-Operation konfiguriert ist, gibt es vier Arten von Stimuli an das Motherboard: Taktgeber, Interrupte, Dateneingabe und andere asynchrone Ereignisse. Jeder dieser Stimuli wird im folgenden diskutiert.
  • a) Steuerung der Taktgeber
  • Ein typisches Motherboard umfaßt mehrere Taktgeber. Der Kerntaktgeber treibt die internen Prozessorschaltkreise an. Der Prozessorbus-Taktgeber, auch Vorderseitenbus- oder VSB-Taktgeber genannt, steuert die Aktivität des Prozessorbusses. Der Speicheraktualisierungs-Taktgeber, der oft von dem VSB-Taktgeber abgeleitet ist, steuert die Speicheraktualisierung. Der PCI-Bus-Taktgeber steuert die Aktivität des PCI-Busses. Der Interrupt-Controller-Taktgeber schließlich, der auch FPIC- Taktgeber genannt wird, steuert die zeitliche Abfolge der Interrupts. Eine Ausrichtung aller dieser Taktgeber aufeinander kann sichergestellt werden, indem sie alle von einem einzigen Oszillator abgeleitet werden.
  • b) Steuerung der Interrupts
  • Bei den Rechenelementen müssen sowohl die Interrupte selbst als auch der Mechanismus zur Ausführung des Interrupts gesteuert werden. Das System 300 braucht nur drei Interrupte: den Prozessor-Zähler-Interrupt, den Inter-Prozessor- Interrupt und den MSK-Interrupt. Der Prozessor-Zähler-Interrupt initiiert den Übergang von der Takt-Lockstep-Operation (normaler Modus) zur Anweisungs-Lockstep- Operation (Systemmodus). Der Inter-Prozessor-Interrupt koordiniert den Übergang von der Takt-Lockstep-Operation (normaler Modus) zur Anweisungs-Lockstep- Operation (Systemmodus). Der MSK-Interrupt steuert DMA-Übertragungen und Übergänge von der Anweisungs-Lockstep-Operation (Systemmodus) zur Takt- Lockstep-Operation (normaler Modus).
  • Die synchrone Ausführung aller Interrupte erfordert es, daß der FPIC- Taktgeber synchron und synchronisierbar mit den anderen Taktgebern ist. Während die Anforderung der Synchronität dadurch erfüllt werden kann, daß alte Taktgeber von demselben Oszillator abgeleitet werden, hängt die Fähigkeit des FPIC- Taktgebers zur Synchronisation durch Softwaresteuerung von den Eigenschaften der Motherboard-Komponenten ab. Der FPIC-Taktgeber muß auch einen angemessenen Schrägverlauf haben, um eine Divergenz zu vermeiden.
  • c) Steuerung der Dateneingabe
  • Die Ausführung von Eingabedaten wird synchron gemacht, indem handelsübliche Schaltkreise in der MSK verwendet werden. Datenübergänge zwischen der Eingabe-/Ausgabe-Prozessor-MSK und der Rechenelement-MSK basieren auf dem Taktgeber des Transmitters. Die Rechenelement-MSK sammelt Daten von den Eingabe-/Ausgabe-Prozessoren, während das Rechenelement sich in Takt-Lockstep- Operation (normaler Modus) befindet, und stellt diese Daten dem Rechenelement zur Verfügung, wenn das Rechenelement sich in Anweisungs-Lockstep-Operation (Systemmodus) befindet. Die Rechenelement-MSK ist so aufgebaut, daß DMA- Datenübermittlungen, die ausgeführt werden, während das Rechenelement sich in Takt-Lockstep-Operation (normaler Modus) befindet, synchron zum Anweisungsstrom sind.
  • d) Nicht gesteuerte Ereignisse
  • Einige Ereignisse sind per se ungesteuert. Diese Ereignisse hängen mit Fehlerbedingungen und Warnungen zusammen und verursachen eine Divergenz der Rechenelemente, wenn ihr Auftreten zugelassen wird. Beispiele solcher Ereignisse sind Interrupte des Systemmanagements ("SM-Interrupt"), wie solche, die für das Stromversorgungs-Management verwendet werden, und nicht maskierbare Interrupte ("NM-Interrupt"), wie solche, die mit Doppelbit-Speicher-Fehlern im Zusammenhang stehen. Die Systemsteuerung deaktiviert den SM-Interrupt des Rechenelement- Motherboards. Ereignisse, die durch den SM-Interrupt berichtet werden, werden von den Rechenelementen überwacht, wobei die Eingabe-/Ausgabe-Prozessoren als Filter verwendet werden. Die Rechenelemente lesen periodisch das jeweils aktuelle SM-Interrupt-Register und übermitteln die Daten an die Eingabe-/Ausgabe- Prozessoren. Die Eingabe-/Ausgabe-Prozessoren bestimmen dann, ob ein SM- Interrupt erforderlich ist, und weisen alle Rechenelemente an, einen SM-Interrupt- Algorithmus auf der Grundlage des von den Eingabe-/Ausgabe-Prozessoren ermittelten Werts des jeweils aktuellen Registers auszuführen. Die SM-Interrupt-Aktivität ist datendivergent, aber nicht anweisungsdivergent. Die Datendivergenz wird während der Anweisungs-Lockstep-Operation (Systemmodus) behandelt.
  • Eines der erwarteten SM-Interrupt-Ereignisse steht mit ECC-Fehlern im Zusammenhang. Die Algorithmen, die von den Speichersteuerungen zur Behandlung korrigierbarer Fehler verwendet werden, beeinflussen die Frequenz der Rechenelement-Divergenz. Beispielsweise erlaubt eine fliegende Korrektur ohne Zyklusstrafe den Rechenelementen, ohne Divergenz fortzufahren. Bei diesem Ansatz führt der SM-Interrupt-Code die Späterschreibkorrektur zu einem späteren Zeitpunkt aus. Fliegende Korrektur mit Zyklusstrafe verursacht eine Rechenelement-Divergenz. Eine automatische Späterschreibkorrektur verursacht eine Rechenelement-Divergenz. Je spezifischer die Fehleradresse ist, umso schneller kann der Einzelbit-Fehler behoben werden.
  • NM-Interrupt-Ereignisse sind häufig katastrophal für die Rechenumgebung. Das Rechenelement löst ein Fehlerpaket an die Eingabe-/Ausgabe-Prozessoren aus, bevor es den NM-Interrupt auftreten läßt. So werden die Eingabe-/Ausgabe- Prozessoren benachrichtigt, bei welchem Rechenelement ein Fehler vorliegt, bevor die resultierende Rechenelement-Divergenz entdeckt wird. Die Eingabe-/Ausgabe- Prozessoren reagieren auf den Rechenelement-Fehler, indem sie das Rechenelement deaktivieren.
  • 4. Neuausrichtung der Rechenelemente
  • Das System richtet die Rechenelemente neu aus, um Taktabweichungen zwischen den Rechenelementen 305 auszugleichen. Taktabweichungen treten auf, weil jedes Rechenelement seinen eigenen Oszillator verwendet, wobei ein gemeinsamer Oszillator für alle Prozessoren des Rechenelements verwendet wird. Ohne Korrektur kann die Taktabweichung dazu führen, daß die Rechenelemente so weit voneinander abweichen, daß sie nicht mehr richtig funktionieren. Das System 300 gleicht die Taktabweichung so aus, daß keine Divergenz der Prozessoren auftritt.
  • Bei dem in Fig. 7 gezeigten Ansatz verwendet das System ein Verfahren 700, bei dem jedes Rechenelement periodisch unterschiedlich oft einen Eingabe- /Ausgabe-Ort abfragt (Schritt 705). Eine Mindestanzahl von Ausführungen der Abfrageschleife (Schritt 710) stellt sicher, daß alle Caches der Prozessoren konsistent bleiben. Während z. B. ein Durchgang durch die Schleife den Inhalt einiger Caches feststellt (z. B. der L1- und der L2-Cache), können multiple (z. B. vier) Durchgänge nötig sein, um Konsistenz in anderen Caches oder Puffern (z. B. beim Sprungziel- Puffer) zu erzwingen. Nach der nötigen Zahl von Durchgängen führt jedes Rechenelement die Schleife so oft aus, wie nötig, um die Taktabweichung auszugleichen (Schritt 715). Da dies eine grobkörnige Korrektur ist, muß das System in der Lage sein, einen Takt-Schrägverlauf in der Größe dieses Korns zu bewältigen (d. h. die Größe der Zeit, die für eine Schleife benötigt wird).
  • Bei einer anderen Abfragetechnik umfaßt jede Rechenelement-Abfrage den Eingabe-/Ausgabe-Ort gleich oft. Die Ergebnisse der Abfragen durch ein Rechenelement werden dann durch ODER verbunden, um ein Endergebnis für das Rechenelement zu erhalten.
  • Bei einem anderen Ansatz zur Koordination der Prozessoren treten die Rechenelemente in einen HALT-Zustand ein, während sie auf die Eingabe/Ausgabe warten. Bei Beendigung der Eingabe/Ausgabe werden die Rechenelemente unterbrochen. Entweder ist der Interrupt abhängig von der Ausrichtung des Systems, oder ein Ausrichtungsvorgang wird in der Interrupt-Steuerung ausgeführt. In beiden Fällen ist die Ausrichtung zwischen den Rechenelementen beim Ausgang aus der Interrupt- Steuerung sichergestellt.
  • Anforderungen an das Motherboard eines SMP-Rechenelements
  • Ein Motherboard braucht einige Merkmale zur Unterstützung der Synchronisation von SMP-Rechenelementen bei dem System 300. Wie oben erwähnt arbeiten die Rechenelemente in zwei Modi: dem emulierten Takt-Lockstep und dem Anweisungs-Lockstep. Während der emulierten Takt-Lockstep-Operation führen die Rechenelemente das Betriebssystem und die Anwendersoftware aus. Während der Anweisungs-Lockstep-Operation führen die Rechenelemente die Systemsteuerung aus.
  • Bei der emulierten Takt-Lockstep-Operation ist sichergestellt, daß der Anfangszustand und alle Eingaben zwischen den Motherboards identisch sind. Beide Motherboards führen denselben Anweisungsstrom in derselben Zahl von Taktzyklen aus. Die Ausführung schreitet unkontrolliert über eine vorher gewählte Anzahl von Taktzyklen fort.
  • Dann erfolgt der Eintritt in den Anweisungs-Lockstep-Modus. Beim Anweisungs-Lockstep führen beide Motherboards denselben Anweisungsstrom aus, aber die Anzahl der erforderlichen Taktzyklen ist nicht konsistent. Während des Anweisungs-Lockstep kommuniziert jedes Rechenelement mit seiner Schnittstellenkarte 335, um die synchrone Eingabe-Ausführung zu verhandeln. Der Ausgleich der Taktabweichung zwischen den Rechenelement-Motherboards wird ebenfalls während des Anweisungs-Lockstep-Modus durchgeführt.
  • Eine Rückkehr zum emulierten Takt-Lockstep-Modus erfordert es, die Taktstruktur des Motherboards an dem Anweisungsstrom auszurichten. Beide Motherboards befinden sich während des emulierten Takt-Lockstep-Modus wieder in genau demselben Zustand.
  • Das System 300 beruht darauf, daß es die Wirkung von Takt-Lockstep- Motherboards emulieren kann, ohne tatsächlich eine Phasen-Lock-Taktstruktur zwischen den Motherboards aufzubauen. Das Emulieren von Phasen-Lock-Taktgebern macht es überflüssig, die Wechselwirkungen zwischen den symmetrischen Prozessoren auf einem Motherboard zu entdecken und zu steuern. Eine Phasen-Lock- Taktstruktur beseitigt auch alle Beschränkungen des Codier-Stils, den der Programmierer verwendet, wenn er eine SMP-fähige Anwendung erzeugt. Dadurch ist das System 300 betriebssystem- und anwendungsunabhängig.
  • Die für eine emulierte Phasen-Lock-Struktur nötigen Merkmale umfassen eine einzige Taktstruktur, ein synchrones Speichersystem, eine synchronisierbare Speicher-Aktualisierung, einen synchronen PCI-Bus, eine synchrone Interrupt- Ausführung, und die Fähigkeit, eine Prozessor-Rücksetzung durchzuführen. Jede dieser Anforderungen ist im folgenden genauer beschrieben.
  • 1. Einzige Taktstruktur
  • Die Haupt-Taktgabe-Struktur für das Motherboard muß von einem einzigen Oszillator abgeleitet werden. Die erforderlichen Taktgeber sind der VSB-Taktgeber, der PCI-Taktgeber und der FPIC-Taktgeber.
  • Alle diese Taktgeber müssen von einem einzigen Oszillator abgeleitet werden. Der VSB-Taktgeber hat die höchste Frequenz und wird geteilt, wodurch der PCI- Taktgeber entsteht. Der PCI-Taktgeber wird geteilt, wodurch der FPIC-Taktgeber entsteht. Das Phasenverhältnis zwischen dem VSB-Taktgeber, dem PCI-Taktgeber und dem FPIC-Taktgeber muß sichergestellt sein.
  • Andere Einrichtungen und ihre jeweiligen Taktgeber können auf dem Motherboard vorhanden sein, vorausgesetzt, sie sind deaktiviert und beeinflussen nicht die synchrone Operation des Motherboards, wenn sie deaktiviert sind. Beispiele potentiell asynchroner integrierter Taktgeber sind Video, Ethernet, SCSI, CMOS und USB.
  • 2. Synchrones Speichersystem
  • Die beiden Anforderungen an das Speichersystem sind, daß es synchron zum VSB laufen muß und daß die Zustandsinformation in dem Speichersystem entweder selbstlöschend oder durch Software steuerbar sein muß. Heutige Nordbrücken- Chipsätze erfüllen diese Anforderungen.
  • Die erste Anforderung ist, daß der Speicher sich wie ein Zustandsmotor mit vorhersagbarer Zeitabfolge synchron zum Prozessorbus verhalten muß. Ein asynchrones Speichersystem kann nicht verwendet werden.
  • Die zweite Anforderung ist zielt auf zukünftige Chipsätze ab. Die Speicherschnittstelle wird gegenwärtig als unsichtbarer Logikblock betrachtet. Die Zeitabfolge hängt nicht von einer langen Geschichte vorausgegangener Aktivität ab. Von Schreibpuffern und Cache-Strukturen wird angenommen, daß sie keine Software- Intervention erfordern, um die Lockstep-Operation aufrechtzuerhalten. Von Speicher- Ausgleichs-Algorithmen wird angenommen, daß sie selbstlöschend auf der Grundlage von Leerlauf an der Speicherschnittstelle sind. Wenn eine neue Struktur hinzugefügt wird, die diese Annahmen in Frage stellt, wird eine Software-Technik zum Ausrichten dieser Strukturen benötigt.
  • 3. Synchronisierbare Speicher-Aktualisierung
  • Gewöhnliche Speicher-Aktualisierungs-Operationen, wie die CAS-vor-RAS (CBR)-Aktualisierung, werden von einer synchronen Taktgeber-Struktur ausgelöst, erscheinen aber für den Anweisungsstrom asynchron. Beim Übergang vom Anweisungs-Lockstep-Modus zum emulierten Takt-Lockstep-Modus muß die Aktualisierungsoperation softwaregesteuert neu an dem Anweisungsstrom ausgerichtet werden.
  • Viele Chipsätze erlauben eine Deaktivierung der Aktualisierung. Dies erfüllt nicht notwendigerweise die Anforderung. Die Verzögerung von der Wiederaktivierung der Aktualisierung bis zum Auftreten der ersten Aktualisierungsanforderung muß jedesmal gleich sein, wenn die Aktualisierung wieder aktiviert wird. Die einfachste Methode, dies zu erreichen, ist, der Software zu ermöglichen, den Zähler zurückzusetzen, der die Aktualisierungsanforderung erzeugt.
  • Die Aktualisierungsrate beeinflußt die Funktionalität des Systems. Die Eingabe wird in der Schnittstellenkarte 335 des Rechenelements 305 in die Warteschlange eingereiht, bis das Rechenelement im Anweisungs-Lockstep-Modus ist. Wenn das Rechenelement zum emulierten Takt-Lockstep-Modus zurückkehrt, werden die Eingabedaten in den Speicher 325 des Rechenelements übermittelt. Je häufiger das Rechenelement den Zyklus des Anweisungs-Lockstep-Modus durchläuft, desto niedriger ist die Latenz für Eingabe-/Ausgabe-Operationen. Jeder Übergang vom Anweisungs-Lockstep-Modus zum emulierten Takt-Lockstep-Modus erfordert eine Neuausrichtung der Aktualisierung, und die Mindestzeit, die das Rechenelement im emulierten Takt-Lockstep-Modus verbringen kann, wird von der Aktualisierungsrate beschränkt. Deshalb wird die Eingabe-/Ausgabe-Latenz von der Aktualisierungsrate beschränkt.
  • 4. Der synchrone PCI-Bus
  • Die beiden Anforderungen an den PCI-Bus sind, daß er sowohl bezüglich der Frequenz als auch bezüglich der Phase synchron zum Vorderseitenbus laufen muß, und daß Zustandsinformation auf der PCI-Brücke (d. h. der Nordbrücke) entweder selbstlöschend oder durch Software steuerbar sein muß. Heutige Nordbrücken- Chipsätze erfüllen diese Anforderungen.
  • Die einzige aktive Einrichtung auf dem PCI-Bus ist die Schnittstellenkarte 335. Die CPU führt Eingabe-/Ausgabe-Lese- und Schreibvorgänge zur Schnittstellenkarte 335 durch, während sie sich im emulierten Takt-Lockstep-Modus befindet. Die Schnittstellenkarte 335 führt auch DMA innerhalb und außerhalb des Systemspeichers durch, während sie sich im emulierten Takt-Lockstep-Modus befindet. Die Busoperationen müssen vollständig synchron sein.
  • Von der PCI-Brücke wird erwartet, daß sie einen begrenzten Satz Schreibpuffer und einen Kurzzeit-Ausgleichs-Plan hat. Die Systemsoftware beruht darauf, daß ein leerlaufenden PCI-Bus die ausreichende Voraussetzung ist, um Information über vorherige vergangene Zustände von der PCI-Brücke zu löschen. Wenn eine neue Struktur hinzugefügt wird, die diese Annahme in Frage stellt, wird eine Software-Technik zum Ausrichten dieser Struktur benötigt.
  • 5. Synchrone Interrupt-Ausführung
  • Das System 300 verwendet drei Interrupte: den Operationszähler-Interrupt durch den lokalen FPIC, den Interprozessor-Interrupt unter Verwendung des lokalen FPIC, und einen PCI-Interrupt von der Schnittstellenkarte 335. Alle drei Interrupt- Quellen müssen bezüglich der internen Prozessorstruktur synchron sein.
  • Der FPIC-Taktgeber muß den Interrupt für den Prozessor durchführen, so daß ein Interrupt zur Ausrichtung gestoppter Prozessoren verwendet werden kann. Zusätzlich muß der FPIC-Taktgeber bezüglich des VSB-Taktgebers an den Prozessor- Pins in einem Schrägverlauf sein, so daß beim Empfang einer Interrupt-Anforderung keine Unsicherheit besteht.
  • 6. Rücksetzung des Prozessors
  • Heutige Intel-Prozessoren umfassen eine Reihe interner Strukturen, die nur mit einer vollständigen Rücksetzung des Prozessors gelöscht werden können. Wenn zwei Motherboards zum ersten Mal miteinander synchronisiert werden, wird der Kontext der aktiven Rechenelement-Prozessoren, der mit dem Anweisungsstrom im Zusammenhang steht, im Hauptspeicher zusammen mit einem Wiederherstellungs- Verfahren gespeichert. Eine softwaregetriebene Prozessor-Rücksetzung wird veranlaßt, um alle internen Prozessorstrukturen zu löschen. So werden beide Motherboards in denselben Anfangszustand versetzt, bevor sie ihre emulierte Takt- Lockstep-Operation beginnen. Die Rücksetzung bewirkt, daß der Prozessor am Neustart-Vektor in das BIOS eintritt. Die Steuerung wird dann vom BIOS auf das Wiederherstellungs-Verfahren übertragen, die im Anweisungs-Lockstep läuft. Das Wiederherstellungsverfahren initiiert dann den emulierten Takt-Lockstep-Modus.
  • Das Motherboard muß ein Merkmal für die Rücksetzung der Prozessoren aufweisen, ohne daß der Kontext des laufenden Anweisungsstroms zerstört wird. Das BIOS muß ein Verfahren zur Umleitung der Prozessor-Ausführung auf eine im Speicher lokalisierte Wiederherstellungsroutine zur Verfügung stellen. Außerdem dürfen die Prozessoren zwischen der Rücksetzung und der Ausführung der ersten Anweisung des Wiederherstellungsverfahrens keinen Zugriff auf Daten oder anweisungsdivergente Bereiche des Motherboards genommen haben.
  • Ein Beispiel für ein geeignetes System bieten die Intel 82443BX- und PIIX4- Chips. Bei Wiederaufnahme nach einer Unterbrechung bei laufender Stromversorgung löst der 82443BX eine Prozessor-Rücksetzung aus. Das BIOS kann durch den CMOS-Ort 0Fh so geleitet werden, daß es POST umgeht. Das BIOS kann auch durch den Speicherort 40 : 67 zum Wiederherstellungscode zum Vektor geleitet werden. Diese Kombination stellt eine saubere Methode zum Löschen der Prozessor- Geschichtsstrukturen zur Verfügung.
  • Vereinfachtes System
  • Fig. 8 stellt ein vereinfachtes System 800 dar, das nützlich für die Überprüfung und Erläuterung von Konzepten ist, die von dem SMP-System verwendet werden. Das System 800 ist ein Y-System mit zwei Rechenelementen 805 und einem Eingabe-/Ausgabe-Prozessor 810. Jedes Rechenelement 805 ist ein SMP-System mit zwei Prozessoren, das einen Speicher von 32 MB und ein Diskettenlaufwerk hat. Alle anderen Peripheriegeräte wurden entfernt. Ein einfaches ISA-Modul ist angeschlossen, um einen gesteuerten externen Interrupt zu erzeugen. Der Eingabe-/Ausgabe- Prozessor 810 ist ein Uni-Prozessor.
  • Der Eingabe-/Ausgabe-Prozessor 810 ist zuständig für den Vergleich der Ausgabeergebnisse von den Rechenelementen. Es gibt keine umgeleitete Eingabe/Ausgabe. Die Rechenelemente laufen, und der Eingabe-/Ausgabe-Prozessor überwacht ihre Synchronisation.
  • Wie aus Fig. 9A und 9B zu ersehen ist, arbeitet das System 800 gemäß einem Verfahren 900. Zuerst lädt der Primärprozessor jedes Rechenelements von seinem eigenen Diskettenlaufwerk (Schritt 905). Der Primärprozessor lädt dann ein handelsübliches Programm, das sowohl die SMP-Steuersoftware und die SMP-Anwendung umfaßt, und führt es aus (Schritt 910). Dieses Programm bewirkt, daß jedes Rechenelement seinen Status an den Eingabe-/Ausgabe-Prozessor berichtet und auf eine Anwort wartet (Schritt 915).
  • Der Eingabe-/Ausgabe-Prozessor antwortet, indem er die Rechenelemente anweist, 100.000 Taktzyklen lang zu operieren und dann an den Eingabe /Ausgabe- Prozessor zu berichten (Schritt 920). Nach Erhalt der Antwort führt jedes Rechenelement eine Selbstrücksetzung durch, um die Prozessoren von divergenten Datenstrukturen zu reinigen (Schritt 925).
  • Der Primärprozessor jedes Rechenelements führt dann eine FPIC- Wecksequenz für den Hilfsprozessor aus (Schritt 930). Der Primärprozessor tut dies durch Senden eines Interrupts an den Hilfsprozessor und durch Stoppen (Schritt 932). Der Hilfsprozessor antwortet durch Senden eines Interrupts an den Primärprozessor und durch Stoppen (Schritt 934).
  • Bei Empfang des Interrupts von dem Hilfsprozessor stoppt der Primärprozessor in jedem Rechenelement die Speicheraktualisierung (Schritt 936). Der Prozessor gibt dann einen Interrupt an alle Prozessoren aus und stoppt (Schritt 938).
  • Bei Empfang des ausgegebenen Interrupts startet der Primärprozessor die Aktualisierung neu (Schritt 940) und stellt den Operationszähler auf einen Interrupt nach 100.000 Taktzyklen ein (Schritt 945). Jeder Prozessor setzt dann seinen Zeitstempelzähler ("ZSZ") zurück (Schritt 947). Der Zeitstempelzähler zählt die Anzahl der Taktzyklen, die bei dem Prozessor auftreten. Der Wert des Zählers wird von dem Eingabe-/Ausgabe-Prozessor verwendet, um die Synchronisation der Rechenelemente zu überwachen.
  • Jedes Rechenelement beginnt die Ausführung eines Satzes von vier Tests, die unbeschränkte Modifikationen (ohne Sperren oder Zeichenträger) an einem 64.000-Byte-Abschnitt des Speichers 325 macht (Schritt 950). Sowohl der Primärprozessor als auch der Hilfsprozessor eines Rechenelements führen diese Tests aus. Die Indexvariable, die steuert, welcher Test als nächster durchgeführt wird, ist ebenfalls unbeschränkt, und die zwei Prozessoren des Rechenelements können unabhängig darauf zugreifen.
  • Bei Vollendung von 100.000 Taktzyklen durch den Primärprozessor empfängt der Primärprozessor einen Interrupt (Schritt 955). Der Primärprozessor antwortet durch Senden eines Bildschirmausdrucks seiner Register und des ZSZ an den Speicher und Senden eines Interrupts zum Stoppen des Hilfsprozessors unter Verwendung des FPIC-Busses (Schritt 957). Der Primärprozessor stoppt (Schritt 959) nach Senden des Interrupts.
  • Der Hilfsprozessor antwortet auf den Interrupt durch Senden eines Bildschirmausdrucks seiner Register und des ZSZ an den Speicher (Schritt 960), Senden eines Interrupts an den Primärprozessor (Schritt 962) und Stoppen (Schritt 964).
  • Der Primärprozessor antwortet auf den Interrupt durch Senden seines eigenen Bildschirmausdrucks und des Bildschirmausdrucks des Hilfsprozessors and den Eingabe-/Ausgabe-Prozessor zum Vergleich (Schritt 965) und Stoppen (Schritt 967). Das Senden ist ein ratenorientierte serielle Übertragung, bei der der Prozessor ein Zeichen sendet und x Anweisungsschleifen abwartet. Dies vermeidet eine Abfrage des seriellen Ports. Das Senden kann auch erfolgen, indem ein Interrupt-Schema zum Senden/Stoppen verwendet wird.
  • Der Eingabe-/Ausgabe-Prozessor vergleicht die Pakete von den Rechenelementen (Schritt 970). Der Eingabe-/Ausgabe-Prozessor sendet einen Interrupt in Form einen einzigen Zeichens an die Rechenelemente (Schritt 972). Wenn die Pakete von den Rechenelementen gleich sind, weist der Interrupt die Rechenelemente an fortzufahren. Andernfalls weist der Interrupt die Rechenelemente an, neu zu beginnen.
  • Wenn der Interrupt die Rechenelemente anweist, neu zu beginnen (Schritt 975), beginnt der Primärprozessor wieder mit Schritt 925. Wenn der Interrupt die Rechenelemente anweist fortzufahren, (Schritt 975), stoppt der Primärprozessor die Speicheraktualisierung (Schritt 977). Der Primärprozessor gibt dann einen Interrupt an sich selbst und den Hilfsprozessor aus und stoppt (Schritt 979). Der Primärprozessor löst den Interrupt aus, weil bei der Kommunikation mit dem Eingabe- /Ausgabe-Prozessor eine zeitliche Divergenz der Rechenelemente aufgetreten ist. Der Interrupt dient dazu, den Hilfsprozessor zu reaktivieren und die Anweisungen des Prozessors wieder auf die Taktgabestruktur der Rechenelemente auszurichten. Der Interrupt muß an dem Taktgeber mit der niedrigsten Frequenz der Taktgabestruktur ausgerichtet sein. Dies kann ein Taktgeber sein, der in der Schnittstellenkarte des Rechenelements erzeugt wurde. Bei manchen Systemen kann es der FPIC-Taktgeber sein.
  • Bei Empfang des ausgegebenen Interrupts startet der Primärprozessor die Aktualisierung neu (Schritt 980) und stellt deren Operationszähler auf einen Interrupt nach 100.000 Taktzyklen ein (Schritt 985). Jeder Prozessor setzt dann seinen Zeitstempelzähler ("ZSZ") zurück (Schritt 990), und die Prozessoren fahren mit Schritt 950 fort.
  • Das System 800 arbeitet in drei Operationsmodi: divergent, zeitabfolgedivergent (Anweisungs-Lockstep) und im emulierten Takt-Lockstep. Im divergenten Modus gibt es keine Korrelation zwischen zwischen dem, was die verschiedenen Rechenelemente ausführen. Beim zeitabfolgedivergenten Modus führen beide Rechenelemente denselben Anweisungsstrom aus, aber mit einer unterschiedlichen Zahl von Taktzyklen. Im emulierten Takt-Lockstep-Modus schließlich führen beide Rechenelemente genau dieselben Anweisungen in genau denselben Taktzyklen aus. Bei dem Verfahren 900 sind die Schritte 905 bis 925 divergent, die Schritte 930 bis 938 und 970 bis 979 sind zeitabfolgedivergent, und die Schritte 940 bis 967 und 980 bis 990 sind emulierter Takt-Lockstep.
  • Das System 800 nimmt zwei asynchrone SMP-Rechenelementen 805 und läßt sie sich so verhalten, als wären sie synchron getaktet. Dies erfordert eine Steuerung aller Quellen asynchronen Verhaltens und auch eine Kompensierung der Frequenzdifferenz zwischen den Rechenelementen. Zweck des Systems 800 ist es, zu prüfen, daß dieses Konzept funktioniert, ohne daß die gesamten Hardware- und Softwarestrukturen implementiert werden müssen, die für ein Produkt nötig sind.
  • Hauptquellen asynchronen Verhaltens rühren von der Speicheraktualisierung, dem Bus-Ausgleich, Cache-Leitungs-Füllalgorithmen, Sprungvorhersage, Interrupt- Ausführung, DMA-Aktivität, Eingabe-/Ausgabe-Abfrage und Videoaktualisierung her. Diese können durch richtige Initialisierung und durch Nichtzulassung einer divergenten Code-Ausführung gesteuert werden. Auf die Quellen asynchronen und/oder divergenten Verhaltens wird unten eingegangen.
  • 1. Kontextkoordination
  • Bei einer emulierten Takt-Lockstep-SMP-Implementation führt ein divergenter Code zu extremem Systemverwaltungsaufwand, der notwendig ist, um die Rechenelemente zu resynchronisieren. Das System 800 überwindet das Hindernis durch Verwendung divergenzorientierter Schnittstellenhardware.
  • 2. Speicheraktualisierung
  • Speicheraktualisierung ist eine automatische Aktivität, die von dem Brückenchipsatz der CPU/PCI gesteuert wird. Es ist bekannt, daß Speicheraktualisierung eine Divergenz zwischen Instanzen eines SMP-Systems hervorrufen kann, da sie die Zugriffszeit auf den Speicher modifiziert. Dies führt schließlich zu einer Neuordnung der Verbindungen zwischen Prozessoren. Die Aktualisierung kann einfach mit einer geringen Modifikation am Brückenchipsatz neu ausgerichtet werden. Das System 800 entfernt die Aktualisierungs-Interaktion durch Abschalten der Aktualisierung. Solange auf alle Seiten des Speichers häufig genug zugegriffen wird, geht der Speicherinhalt nicht verloren. Das Aktualisierungsintervall für DRAM-Chips wird typischerweise als 8 Millisekunden definiert. Längere Aktualisierungs-Intervalle sind im allgemeinen erfolgreich.
  • Bei dem System 800 kann der Speicher auf eine von zwei Arten aktualisiert werden. Entweder kann eine Schnellaktualisierungsrate programmiert werden, oder es kann ein CPU-gelenkter Speichergang durchgeführt werden. Bei einem solchen Speichergang ist die Anwendung dafür zuständig, durch die Speicherseiten zu blättern, um die DRAM-Zellen am Leben zu halten. Alternativ kann die Ausrichtung der Aktualisierung erfaßt und die Prozessor-Aktivität zurückgehalten werden, bis die richtige Ausrichtung erreicht ist. Dies ist keine Option für ein tatsächliches Produkt, da es bedeutet, daß 16 Mikrosekunden bei jedem periodischen Interrupt verschwendet werden.
  • 3. Bus-Ausgleich
  • Die Eingabe-/Ausgabe-Busse eines Rechners sind synchron mit dem GPU- Taktgeber. Die Bus-Taktgabe ist von dem CPU-Taktgeber durch ein Divisionswerk abgeleitet. Damit die SMP-Motherboards fortlaufend zusammenarbeiten, beginnen die Prozessoren immer mit demselben Divisionszähler.
  • 4. Cache-Leitungs-Füllalgorithmen
  • Ziel ist, die Cachelinienfüllung nicht zu beeinflussen. Der anfängliche Boot- und Ladevorgang stört höchstwahrscheinlich das Caching. Selbst wenn dieselben Daten sich in der Cache befinden, können sie in unterschiedlichen Zeilen der Cache vorhanden sein. Die Cache kann durch einen Prozessor-Rücksetzungs-Vorgang gereinigt werden. Alternativ kann ein Reinigungs-Algorithmus verwendet werden, der bei seiner Vollendung zu garantierten Cache-Ergebnissen führt. Wenn er verwendet wird, wird dieser Algorithmus ausgeführt, nachdem die Anwendung geladen hat.
  • 5. Sprungvorhersage
  • Die Sprungvorhersagelogik ist eine weitere Form der Cache-Verwendung. Sie reagiert auf etwas andere Faktoren als eine normale Cache. Die Sprungvorhersage hat einen Inhalt, der auf der gerade zurückliegenden Sprunggeschichte beruht. Eine Anweisungs-Cache wird beim ersten Durchgang durch eine Schleife modifiziert. Die Sprungvorhersage wird modifiziert, je nachdem, wie oft ein bestimmter Sprung gemacht wird. Die Sprungvorhersagelogik kann durch einen Prozessor-Rücksetzungs- Vorgang gelöscht werden. Alternativ können Algorithmen verwendet werden, die eine Abfrage verwenden, bei der die Sprungtabelle nicht divergent wird.
  • 6. Ausgleich der Taktabweichung
  • Die Rechenelemente operieren, als ob sie sich im Takt-Lockstep befinden. Jede CPU braucht genau dieselbe Anzahl von Taktzyklen, um die gleiche Aufgabe zu erfüllen. Da die Taktgeber nicht bezüglich ihrer Frequenz miteinander verbunden sind, unterscheiden sich die Rechenelemente zeitlich, jedoch nicht in ihrer Funktion. Bei einem stark übertriebenen Szenario läuft eine Rechenelement mit 62 MHz und das andere mit 58 MHz bei einem System mit einem Nennwert von 60 MHz. Am Ende einer Sekunde liegt ein Rechenelement vier Millionen Zyklen hinter dem anderen. Dies kann behoben werden, indem beim schnelleren Rechenelement Zeit verschwendet wird, ohne eine Divergenz zu verursachen. Eine Technik besteht darin, eine Nulloperations-Schleife in beiden Prozessoren auszuführen, wobei ein Prozessor diese gerade soweit ausführt, daß die Sprungvorhersage und die Caches neu geordnet werden, und der andere Prozessor sie so lange ausführt, bis die vorher bestimmten Taktzyklen verschwendet worden sind.
  • 7. Interrupt-Ausführung
  • Interrupte werden durch einen anderen als den CPU-Taktgeber gesteuert. Dieser Interrupt-Taktgeber wird synchron zu dem CPU-Taktgeber eingestellt. Wie bei dem Bus-Ausgleich werden die Prozessoren an dem Interrupt-Taktgeber ausgerichtet.
  • 8. DMA-Aktivität
  • Daten werden so aus dem Hauptspeicher in den MSK-Speicher bewegt, daß das Verhältnis der Prozessoren nicht beeinflußt wird. Das DMA wird synchron zu einer Aktivität gestartet, die sowohl von den Rechenelementen und ihren MSK verstanden wird. Bei dem System 800 bedeutet dies, daß DMA nur dann zugelassen ist, wenn die Prozessoren gestoppt werden, was eine Interaktion vermeidet.
  • 9. Eingabe-/Ausgabe-Abfrage
  • Jeder Versuch eines Zugriffs auf Daten außerhalb der Rechenelemente kann zu potentiell divergentem Vehalten führen. Eine Lösung dieses Problems besteht in einer Einbeziehung des Algorithmus zur Sprungvorhersage zusammen mit einer handelsüblichen MSK. Das System 800 löst dieses Problem durch eine strenge Beschränkung der Eingabe/Ausgabe. Die CPU/MSK-Schnittstelle wird als Halbduplexverbindung behandelt, wobei HALT und Interrupt als Zeichenträger verwendet werden.
  • Weitere Ausführungsformen liegen im Bereich der folgenden Patentansprüche.
  • Es wird beansprucht:

Claims (33)

1. Fehlertolerantes bzw. fehlerrobustes Computersystem (100) mit: mindestens zwei Rechenelemente (105) mit Taktgebern, die gegenüber den Taktgebern der anderen Rechenelemente asynchron arbeiten; und
mindestens einem Controller, der/die mit den mindestens zwei Rechenelementen (105) verbunden ist/sind,
dadurch gekennzeichnet, daß
die Rechenelemente (105) in einem ersten Modus aktiv sind, in dem jedes Rechenelement (105) in einem emulierten Takt-Lockstep einen ersten Strom von Anweisungen ausführt, wobei die Rechenelemente (105) die gleiche Anweisungssequenz in der gleichen Reihenfolge ausführen und jede Anweisung von jedem Rechenelement im gleichen Taktzyklus ausgeführt wird,
die Rechenelemente (105) in einem zweiten Modus aktiv sind, in dem jedes Rechenelement (105) im Anweisungs-Lockstep einen zweiten Strom von Anweisungen ausführt, wobei die Rechenelemente die gleiche Anweisungssequenz in der gleichen Reihenfolge ausführen, die Anweisungen jedoch nicht im gleichen Taktzyklus ausführen müssen,
das gewöhnliche Verarbeiten von Anwendersoftware und Betriebssystem durch die Rechenelemente (105) im ersten Modus geschieht, und
das Verarbeiten der Lockstep-Steuersoftware, die die Rechenelemente (105) aufeinander ausrichtet bzw. gewährleistet, daß die hergestellte Ausrichtung der Rechenelemente (105) aufeinander erhalten bleibt, durch die Rechenelemente (105) im zweiten Modus geschieht.
2. Computersystem nach Anspruch 1, wobei jedes der mindestens zwei Rechenelemente ein Multiprozessor-Rechenelement beinhaltet.
3. Computersystem nach Anspruch 2, wobei jedes der mindestens zwei Rechenelemente ein Rechenelement zum symmetrischen Multiprocessing (SMP) beinhaltet.
4. Computersystem nach Anspruch 2, wobei jedes Rechenelement durch ein der Industrienorm entsprechendes Motherboard realisiert wird.
5. Computersystem nach Anspruch 1, wobei Betriebssystem und Anwendersoftware nicht modifizierte Software beinhalten, die für die Anwendung mit nicht fehlertoleranten Computersystemen konfiguriert ist.
6. Computersystem nach Anspruch 2, das so konfiguriert ist, daß wenn die Rechenelemente im zweiten Modus aktiv sind, die Prozessoren der Rechenelemente soweit deaktiviert werden, daß je Rechenelement nur noch ein Prozessor aktiv ist.
7. Computersystem nach Anspruch 1, wobei jedes Rechenelement einen Prozessor, einen Speicher und eine Verbindung zum Controller aufweist.
8. Computersystem nach Anspruch 7, wobei jedes Rechenelement so konfiguriert ist, daß auf den Speicher bezogene Aktualisierungsvorgänge mit der Ausführung von Operationen durch den Prozessor synchronisiert werden.
9. Computersystem nach Anspruch 7, das so konfiguriert ist, daß DMA-Transfers zum Speicher initiiert werden, wenn die Rechenelemente im zweiten Modus aktiv sind, und daß die initiierten DMA-Transfers ausgeführt werden, wenn die Rechenelemente im ersten Modus aktiv sind.
10. Computersystem nach Anspruch 7, das so konfiguriert ist, daß Rechenelemente synchronisiert werden durch:
Kopieren von Speicherinhalt eines ersten Rechenelements in den Speicher eines zweiten Rechenelements; und
Rücksetzen der Prozessoren des ersten und des zweiten Rechenelements, ohne daß dadurch die Speicher der Rechenelemente beeinflußt werden.
11. Computersystem nach Anspruch 1, wobei jedes Rechenelement so konfiguriert ist, daß es in Reaktion auf einen Interrupt vom ersten Operationsmodus in den zweiten Operationsmodus wechselt.
12. Computersystem nach Anspruch 11, wobei der Interrupt einen Interrupt des Operationszählers mit einschließt, der nach dem Auftreten einer festgelegten Anzahl von Taktzyklen vom Rechenelement ausgelöst wird.
13. Computersystem nach Anspruch 12, wobei der Interrupt einen Interrupt des Operationszählers mit einschließt, der nach dem Auftreten einer festgelegten Anzahl von Taktzyklen des Prozessors vom Rechenelement ausgelöst wird.
14. Computersystem nach Anspruch 12, wobei der Interrupt einen Interrupt des Operationszählers mit einschließt, der nach dem Auftreten einer festgelegten Anzahl von Taktzyklen des Busses vom Rechenelement ausgelöst wird.
15. Computersystem nach Anspruch 11, wobei der Interrupt einen Interrupt mit einschließt, der nach Ausführung einer festgelegten Anzahl von Anweisungen vom Rechenelement ausgelöst wird.
16. Computersystem nach Anspruch 11, wobei die mindestens zwei Rechenelemente ein Multiprozessor-Rechenelement mit einem Primärprozessor und einem oder mehreren Sekundärprozessoren beinhalten, und wobei der Primärprozessor so konfiguriert ist, daß in Reaktion auf den Interrupt die Aktivitäten der Sekundärprozessoren gestoppt werden.
17. Computersystem nach Anspruch 1, wobei jedes Rechenelement so konfiguriert ist, daß während des Wechsels vom zweiten Operationsmodus in den ersten Operationsmodus ein Interrupt ausgelöst wird, wobei der Interrupt dazu dient, den Verarbeitungsprozess des Rechenelements und eine Taktgabestruktur des Rechenelements aufeinander auszurichten.
18. Computersystem nach Anspruch 17, wobei der Interrupt mit einem Taktgeber synchronisiert wird, der in der Taktgabestruktur die niedrigsten Frequenzen hat.
19. Computersystem nach Anspruch 1, das so konfiguriert ist, daß Ein- /Ausgabeoperationen von den Rechenelementen auf den Controller umgeleitet werden.
20. Computersystem nach Anspruch 1, mit einem zweiten Controller, der mit dem ersten Controller und den mindestens zwei Rechenelementen verbunden ist.
21. Computersystem nach Anspruch 20, wobei der erste Controller und ein erstes der Rechenelemente sich an einem ersten Ort befinden, und der zweite Controller und ein zweites der Rechenelemente sich an einem zweiten Ort befinden, und mit einer Übertragungsverknüpfung, die den ersten Controller mit dem zweiten Controller, den ersten Controller mit dem zweiten der Rechenelemente, und den zweiten Controller mit dem ersten der Rechenelemente verbindet.
22. Computersystem nach Anspruch 21, wobei der erste Ort vom zweiten Ort mehr als 5 Meter entfernt ist.
23. Computersystem nach Anspruch 21, wobei der erste Ort vom zweiten Ort mehr als 100 Meter entfernt ist.
24. Verfahren zum Betreiben eines fehlertoleranten bzw. fehlerrobusten Computersystems (100) mit mindestens zwei Rechenelementen (105), die mit mindestens einem Controller verbunden sind, und mit Taktgebern, die gegenüber den Taktgebern der anderen Rechenelemente asynchron arbeiten, gekennzeichnet durch folgende Schritte:
Betreiben der Rechenelemente (105) in einem ersten Modus, in dem jedes Rechenelement in einem emulierten Takt-Lockstep einen ersten Strom von Anweisungen ausführt, wobei die Rechenelemente (105) die gleiche Anweisungssequenz in der gleichen Reihenfolge ausführen und jede Anweisung von jedem Rechenelement im gleichen Taktzyklus ausgeführt wird, und
Betreiben der Rechenelemente (105) in einem zweiten Modus, in dem jedes Rechenelement (105) im Anweisungs-Lockstep einen zweiten Strom von Anweisungen ausführt, wobei die Rechenelemente (105) die gleiche Anweisungssequenz in der gleichen Reihenfolge ausführen, die Anweisungen jedoch nicht im gleichen Taktzyklus ausführen müssen,
wobei das gewöhnliche Verarbeiten von Anwendersoftware und Betriebssystem durch die Rechenelemente (105) im ersten Modus geschieht, und das Verarbeiten der Lockstep- Steuersoftware, die die Rechenelemente (105) aufeinander ausrichtet bzw. gewährleistet, daß die hergestellte Ausrichtung der Rechenelemente (105) aufeinander erhalten bleibt, durch die Rechenelemente (105) im zweiten Modus geschieht.
25. Verfahren nach Anspruch 24, wobei jedes Rechenelement ein Multiprozessor- Rechenelement beinhaltet.
26. Verfahren nach Anspruch 25, wobei, wenn die Rechenelemente im zweiten Modus aktiv sind, die Prozessoren der Rechenelemente soweit deaktiviert werden, daß je Rechenelement nur noch ein Prozessor aktiv ist.
27. Verfahren nach Anspruch 24, wobei jedes Rechenelement einen Prozessor, einen Speicher und eine Verbindung zum Controller aufweist.
28. Verfahren nach Anspruch 27, wobei auf den Speicher bezogene Aktualisierungsvorgänge mit der Ausführung von Operationen durch den Prozessor synchronisiert werden.
29. Verfahren nach Anspruch 27, wobei DMA-Transfers zum Speicher initiiert werden, wenn die Rechenelemente im zweiten Modus aktiv sind und die initiierten DMA-Transfers ausgeführt werden, wenn die Rechenelemente im ersten Modus aktiv sind.
30. Verfahren nach Anspruch 27, wobei die Rechenelemente synchronisiert werden durch:
Kopieren von Speicherinhalt eines ersten Rechenelements in den Speicher eines zweiten Rechenelements; und
Rücksetzen der Prozessoren des ersten und des zweiten Rechenelements, ohne daß dadurch die Speicher der Rechenelemente beeinflußt werden.
31. Verfahren nach Anspruch 24, wobei in Reaktion auf einen Interrupt vom ersten Operationsmodus in den zweiten Operationsmodus gewechselt wird.
32. Verfahren nach Anspruch 31, wobei jedes der mindestens zwei Rechenelemente ein Multiprozessor-Rechenelement mit einem Primärprozessor und einem oder mehreren Sekundärprozessoren beinhaltet, und wobei in Reaktion auf den Interrupt die Aktivitäten der Sekundärprozessoren gestoppt werden.
33. Verfahren nach Anspruch 24, wobei Ein-/Ausgabeoperationen von den Rechenelementen auf den Controller umgeleitet werden.
DE69804489T 1997-11-14 1998-11-13 Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen Expired - Fee Related DE69804489T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US6579097P 1997-11-14 1997-11-14
PCT/US1998/024378 WO1999026133A2 (en) 1997-11-14 1998-11-13 Method for maintaining the synchronized execution in fault resilient/fault tolerant computer systems

Publications (2)

Publication Number Publication Date
DE69804489D1 DE69804489D1 (de) 2002-05-02
DE69804489T2 true DE69804489T2 (de) 2002-11-14

Family

ID=22065134

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69804489T Expired - Fee Related DE69804489T2 (de) 1997-11-14 1998-11-13 Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen

Country Status (8)

Country Link
US (2) US6279119B1 (de)
EP (1) EP1029267B1 (de)
JP (1) JP2001523855A (de)
AT (1) ATE215244T1 (de)
AU (1) AU753120B2 (de)
CA (1) CA2309926A1 (de)
DE (1) DE69804489T2 (de)
WO (1) WO1999026133A2 (de)

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001523855A (ja) 1997-11-14 2001-11-27 マラソン テクノロジーズ コーポレイション 故障回復/耐故障計算機
US6625756B1 (en) 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6523130B1 (en) * 1999-03-11 2003-02-18 Microsoft Corporation Storage system having error detection and recovery
US6418540B1 (en) * 1999-08-27 2002-07-09 Lucent Technologies Inc. State transfer with throw-away thread
US6467049B1 (en) * 1999-10-15 2002-10-15 Cisco Technology, Inc. Method and apparatus for configuration in multi processing engine computer systems
US6658595B1 (en) 1999-10-19 2003-12-02 Cisco Technology, Inc. Method and system for asymmetrically maintaining system operability
US6625637B1 (en) * 1999-12-09 2003-09-23 Koninklijke Philips Electronics N.V. Method and apparatus for synthesizing communication support based on communication types of application
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US6640313B1 (en) * 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US7769988B1 (en) * 1999-12-23 2010-08-03 Ati Technologies Ulc Method of integrating a personal computing system and apparatus thereof
EP1162540A1 (de) * 2000-06-07 2001-12-12 Siemens Schweiz AG Vorrichtung und Verfahren zur Synchronisation eines Systems von gekoppelten Datenverarbeitungsanlagen
GB2366012B (en) * 2000-08-14 2002-08-14 Sun Microsystems Inc A computer system
EP1239369A1 (de) * 2001-03-07 2002-09-11 Siemens Aktiengesellschaft Fehlertolerante Rechneranordnung und Verfahren zum Betrieb einer derartigen Anordnung
US6728735B1 (en) * 2001-03-12 2004-04-27 Network Appliance, Inc. Restartable dump that produces a consistent filesystem on tapes
JP2002287997A (ja) * 2001-03-23 2002-10-04 Kinji Mori 多重系処理方法
US6859892B2 (en) * 2001-04-25 2005-02-22 Hewlett-Packard Development Company, L.P. Synchronous breakpoint system and method
US6859866B2 (en) * 2001-10-01 2005-02-22 International Business Machines Corporation Synchronizing processing of commands invoked against duplexed coupling facility structures
US7603440B1 (en) * 2001-11-09 2009-10-13 Persystent Technology Corporation System and method for management of end user computing devices
US6848034B2 (en) 2002-04-04 2005-01-25 International Business Machines Corporation Dense server environment that shares an IDE drive
US6792481B2 (en) * 2002-05-30 2004-09-14 Freescale Semiconductor, Inc. DMA controller
JP3606281B2 (ja) * 2002-06-07 2005-01-05 オムロン株式会社 プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法
US7003691B2 (en) * 2002-06-28 2006-02-21 Hewlett-Packard Development Company, L.P. Method and apparatus for seeding differences in lock-stepped processors
JP2004046455A (ja) * 2002-07-10 2004-02-12 Nec Corp 情報処理装置
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
EP1398699A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
EP1398701A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
EP1398700A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren und Schaltungsanordnung zur Synchronisation redundanter Verarbeitungseinheiten
WO2004086225A1 (ja) * 2003-03-24 2004-10-07 Fujitsu Limited 仮想計算機システム
JP4492035B2 (ja) * 2003-04-21 2010-06-30 日本電気株式会社 データ処理装置
US7149919B2 (en) * 2003-05-15 2006-12-12 Hewlett-Packard Development Company, L.P. Disaster recovery system with cascaded resynchronization
US20050039074A1 (en) * 2003-07-09 2005-02-17 Tremblay Glenn A. Fault resilient/fault tolerant computing
US20050010837A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method and apparatus for managing adapters in a data processing system
US20050114735A1 (en) * 2003-11-20 2005-05-26 Smith Zachary S. Systems and methods for verifying core determinacy
US9213609B2 (en) * 2003-12-16 2015-12-15 Hewlett-Packard Development Company, L.P. Persistent memory device for backup process checkpoint states
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program
US7426656B2 (en) * 2004-03-30 2008-09-16 Hewlett-Packard Development Company, L.P. Method and system executing user programs on non-deterministic processors
US8799706B2 (en) 2004-03-30 2014-08-05 Hewlett-Packard Development Company, L.P. Method and system of exchanging information between processors
US7290169B2 (en) * 2004-04-06 2007-10-30 Hewlett-Packard Development Company, L.P. Core-level processor lockstepping
US7296181B2 (en) * 2004-04-06 2007-11-13 Hewlett-Packard Development Company, L.P. Lockstep error signaling
US7237144B2 (en) * 2004-04-06 2007-06-26 Hewlett-Packard Development Company, L.P. Off-chip lockstep checking
WO2006001051A1 (ja) * 2004-06-24 2006-01-05 Fujitsu Limited マルチプロセッサ装置及びその制御方法
DE102004038590A1 (de) * 2004-08-06 2006-03-16 Robert Bosch Gmbh Verfahren zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Zweirechnersystems sowie entsprechende Verzögerungseinheit
US7502958B2 (en) * 2004-10-25 2009-03-10 Hewlett-Packard Development Company, L.P. System and method for providing firmware recoverable lockstep protection
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
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
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
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
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
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
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
JP4165499B2 (ja) 2004-12-13 2008-10-15 日本電気株式会社 コンピュータシステム及びそれを用いたフォールトトレラントシステム並びにその動作制御方法
JP4411602B2 (ja) * 2004-12-16 2010-02-10 日本電気株式会社 フォールトトレラント・コンピュータシステム
JP4168403B2 (ja) * 2004-12-21 2008-10-22 日本電気株式会社 フォールトトレラントシステム、これで用いる制御装置、アクセス制御方法、及び制御プログラム
JP4182948B2 (ja) * 2004-12-21 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
US7337367B2 (en) * 2005-01-06 2008-02-26 International Business Machines Corporation Management of memory controller reset
US7467327B2 (en) * 2005-01-25 2008-12-16 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by exchanging information about instructions executed
US7328331B2 (en) * 2005-01-25 2008-02-05 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
US7971095B2 (en) * 2005-02-16 2011-06-28 Honeywell International Inc. Fault recovery for real-time, multi-tasking computer system
US7933966B2 (en) * 2005-04-26 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system of copying a memory area between processor elements for lock-step execution
US7590885B2 (en) * 2005-04-26 2009-09-15 Hewlett-Packard Development Company, L.P. Method and system of copying memory from a source processor to a target processor by duplicating memory writes
US7877552B2 (en) 2005-05-24 2011-01-25 Marathon Technologies Corporation Symmetric multiprocessor fault tolerant computer system
US7802075B2 (en) * 2005-07-05 2010-09-21 Viasat, Inc. Synchronized high-assurance circuits
US8527741B2 (en) * 2005-07-05 2013-09-03 Viasat, Inc. System for selectively synchronizing high-assurance software tasks on multiple processors at a software routine level
US8190877B2 (en) * 2005-07-05 2012-05-29 Viasat, Inc. Trusted cryptographic processor
WO2007018652A1 (en) * 2005-08-05 2007-02-15 Honeywell International, Inc. Distributed and recoverable digital control system
US8260492B2 (en) * 2005-08-05 2012-09-04 Honeywell International Inc. Method and system for redundancy management of distributed and recoverable digital control system
WO2007094808A1 (en) * 2005-08-05 2007-08-23 Honeywell International Inc. Monitoring system and methods for a distributed and recoverable digital control system
US20070038849A1 (en) * 2005-08-11 2007-02-15 Rajiv Madampath Computing system and method
US7747897B2 (en) * 2005-11-18 2010-06-29 Intel Corporation Method and apparatus for lockstep processing on a fixed-latency interconnect
US7627584B2 (en) * 2005-11-30 2009-12-01 Oracle International Corporation Database system configured for automatic failover with no data loss
US7668879B2 (en) * 2005-11-30 2010-02-23 Oracle International Corporation Database system configured for automatic failover with no data loss
JP4816911B2 (ja) 2006-02-07 2011-11-16 日本電気株式会社 メモリの同期化方法及びリフレッシュ制御回路
US20080016062A1 (en) * 2006-06-30 2008-01-17 Drescher Keith A Request-response trigger generation in link-connected computing systems
US7793147B2 (en) * 2006-07-18 2010-09-07 Honeywell International Inc. Methods and systems for providing reconfigurable and recoverable computing resources
US7890684B2 (en) * 2006-08-31 2011-02-15 Standard Microsystems Corporation Two-cycle return path clocking
US7986718B2 (en) * 2006-09-15 2011-07-26 Itron, Inc. Discovery phase in a frequency hopping network
US8213706B2 (en) * 2008-04-22 2012-07-03 Honeywell International Inc. Method and system for real-time visual odometry
US8090984B2 (en) * 2008-12-10 2012-01-03 Freescale Semiconductor, Inc. Error detection and communication of an error location in multi-processor data processing system having processors operating in Lockstep
US8880473B1 (en) 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
JP2010198131A (ja) * 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
US7979746B2 (en) * 2009-04-27 2011-07-12 Honeywell International Inc. Dual-dual lockstep processor assemblies and modules
US8156371B2 (en) * 2009-06-16 2012-04-10 Honeywell International Inc. Clock and reset synchronization of high-integrity lockstep self-checking pairs
US8484508B2 (en) * 2010-01-14 2013-07-09 Arm Limited Data processing apparatus and method for providing fault tolerance when executing a sequence of data processing operations
US8812907B1 (en) 2010-07-19 2014-08-19 Marathon Technologies Corporation Fault tolerant computing systems using checkpoints
US8479042B1 (en) * 2010-11-01 2013-07-02 Xilinx, Inc. Transaction-level lockstep
US9208036B2 (en) * 2011-04-19 2015-12-08 Freescale Semiconductor, Inc. Dynamic lockstep cache memory replacement logic
US9158610B2 (en) * 2011-08-04 2015-10-13 Microsoft Technology Licensing, Llc. Fault tolerance for tasks using stages to manage dependencies
JP6098778B2 (ja) * 2012-03-29 2017-03-22 日本電気株式会社 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム
US9342358B2 (en) 2012-09-14 2016-05-17 General Electric Company System and method for synchronizing processor instruction execution
US9256426B2 (en) 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
US9021313B2 (en) 2012-11-21 2015-04-28 Microsoft Technology Licensing, Llc Priority-assignment interface to enhance approximate computing
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
US9769058B2 (en) 2013-05-17 2017-09-19 Ciena Corporation Resilient dual-homed data network hand-off
JP5772911B2 (ja) * 2013-09-27 2015-09-02 日本電気株式会社 フォールトトレラントシステム
US9652338B2 (en) 2013-12-30 2017-05-16 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
EP3090336A1 (de) 2013-12-30 2016-11-09 Paul A. Leveille Checkpointingsysteme und verfahren zur verwendung von datenweiterleitung
EP3090345B1 (de) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Verfahren zur prüfpunktverzögerung durch inspektion von netzwerkdatenpaketen
CA2967748A1 (en) 2014-11-13 2016-05-19 Virtual Software Systems, Inc. System for cross-host, multi-thread session alignment
KR20170130346A (ko) * 2015-03-20 2017-11-28 르네사스 일렉트로닉스 가부시키가이샤 데이터 처리 장치
KR20170094911A (ko) * 2016-02-12 2017-08-22 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
JP6554048B2 (ja) * 2016-02-29 2019-07-31 株式会社日立製作所 表示装置
JP6890120B2 (ja) 2016-08-04 2021-06-18 ドミニオン エンジニアリング, インク.Dominion Engineering, Inc. 原子力発電所構成部品上への放射性核種堆積の抑制
JP6786448B2 (ja) * 2017-06-28 2020-11-18 ルネサスエレクトロニクス株式会社 半導体装置
KR101977172B1 (ko) * 2017-07-04 2019-05-10 주식회사 한화 다중화 로직 기반 락스텝 실행 장치 및 방법
EP3428748B1 (de) * 2017-07-13 2020-08-26 Siemens Aktiengesellschaft Verfahren und anordnung zum betrieb von zwei redundanten systemen
CN110719586B (zh) * 2018-07-13 2022-06-03 成都鼎桥通信技术有限公司 业务建立方法、装置及服务器
US11327858B2 (en) * 2020-08-11 2022-05-10 Seagate Technology Llc Preserving data integrity during controller failure
US20240118901A1 (en) * 2022-10-07 2024-04-11 Xilinx, Inc. Switching between redundant and non-redundant modes of software execution

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4634110A (en) 1983-07-28 1987-01-06 Harris Corporation Fault detection and redundancy management system
US4531185A (en) 1983-08-31 1985-07-23 International Business Machines Corporation Centralized synchronization of clocks
US4805107A (en) 1987-04-15 1989-02-14 Allied-Signal Inc. Task scheduler for a fault tolerant multiple node processing system
CH675781A5 (de) 1987-04-16 1990-10-31 Bbc Brown Boveri & Cie
EP0306211A3 (de) 1987-09-04 1990-09-26 Digital Equipment Corporation Synchronisiertes Doppelrechnersystem
US4907228A (en) 1987-09-04 1990-03-06 Digital Equipment Corporation Dual-rail processor with error checking at single rail interfaces
CA2003338A1 (en) 1987-11-09 1990-06-09 Richard W. Cutts, Jr. Synchronization of fault-tolerant computer system having multiple processors
US4937741A (en) 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US4965717A (en) 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
DE69010106T2 (de) 1989-07-25 1994-10-13 Mobil Oil Corp Verfahren und Vorrichtung zum Feststellen von Aenderungen des Flüssigkeitsniveaus in einem Speicherbehälter.
EP0411805B1 (de) * 1989-08-01 1996-10-09 Digital Equipment Corporation Massenspeicherübertragung während der Neusynchronisierung
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5226152A (en) 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
WO1993009494A1 (en) 1991-10-28 1993-05-13 Digital Equipment Corporation Fault-tolerant computer processing using a shadow virtual processor
US5675579A (en) 1992-12-17 1997-10-07 Tandem Computers Incorporated Method for verifying responses to messages using a barrier message
US5751932A (en) 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
EP0731945B1 (de) * 1993-12-01 2000-05-17 Marathon Technologies Corporation Fehler-betriebssichere/fehler tolerante computerbetriebsmethode
US5725523A (en) 1996-03-29 1998-03-10 Mueller; Richard L. Lateral-and posterior-aspect method and apparatus for laser-assisted transmyocardial revascularization and other surgical applications
JP2001523855A (ja) * 1997-11-14 2001-11-27 マラソン テクノロジーズ コーポレイション 故障回復/耐故障計算機

Also Published As

Publication number Publication date
WO1999026133A3 (en) 1999-07-15
DE69804489D1 (de) 2002-05-02
US6279119B1 (en) 2001-08-21
AU753120B2 (en) 2002-10-10
WO1999026133A2 (en) 1999-05-27
EP1029267A2 (de) 2000-08-23
CA2309926A1 (en) 1999-05-27
EP1029267B1 (de) 2002-03-27
AU1524999A (en) 1999-06-07
JP2001523855A (ja) 2001-11-27
US20020026604A1 (en) 2002-02-28
ATE215244T1 (de) 2002-04-15
US6473869B2 (en) 2002-10-29

Similar Documents

Publication Publication Date Title
DE69804489T2 (de) Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen
DE69801909T2 (de) Lose gekoppelte, synchronisierte ausführung
DE69424565T2 (de) Fehler-betriebssichere/fehler tolerante computerbetriebsmethode
DE69614138T2 (de) Prüfpunkt-fernspeichersystem und -verfahren für ein fehlertolerantes system
DE69027491T2 (de) Verfahren zur Softwarefehlerbehandlung
DE68928360T2 (de) Hochleistungsrechnersystem mit fehlertoleranter Fähigkeit; Verfahren zum Betrieb desselben
DE69506404T2 (de) Hauptspeichervorrichtung und wiederanlaufkennzeichnungsverfahren für ein fehlertolerantes rechnersystem
US8020041B2 (en) Method and computer system for making a computer have high availability
DE69032607T2 (de) Physischer, einziger Hauptspeicher, anteilig genutzt durch zwei oder mehr Prozessoren, die ihr jeweiliges Betriebssystem ausführen
CA1320276C (en) Dual rail processors with error checking on i/o reads
US20050240806A1 (en) Diagnostic memory dump method in a redundant processor
DE69911026T2 (de) Synchronisation von prozessoren in einem fehlertoleranten multi-prozessor-system
US20090240916A1 (en) Fault Resilient/Fault Tolerant Computing
DE112014001873T5 (de) Replikation für Hot-Standby-Online-Datenbank
DE102005014488A1 (de) Verfahren und System zum Bedienen asynchroner Unterbrechungen bei mehreren Prozessoren, die ein Benutzerprogramm ausführen
US7669073B2 (en) Systems and methods for split mode operation of fault-tolerant computer systems
CN111400086B (zh) 虚拟机容错的实现方法和系统
DE69032508T2 (de) Fehlertolerantes Rechnersystem mit Online-Wiedereinfügung und Abschaltung/Start
DE102005014531A1 (de) Verfahren und System, die Benutzerprogramme an nicht-deterministischen Prozessoren ausführen
EP1537482B1 (de) Verfahren und schaltungsanordnung zur synchronisation synchron oder asynchron getakteter verarbeitungseinheiten
DE69837635T2 (de) Dateiensystem und Dateienverwaltungsverfahren, die eine verteilte Replikation in einem System mit gemeinsamen RAID verwirklichen
DE102005014458A1 (de) Verfahren und System zum Austauschen von Informationen zwischen Prozessoren
EP1169676A1 (de) Hintergrund synchronisation bei fehlertoleranten systemen
Boyd et al. Preemptive Module Replacement Using the Virtualizing Operating System
DE112023000003T5 (de) Hochverfügbarkeitssysteme mit thin-provisioned-sekundärserver

Legal Events

Date Code Title Description
8339 Ceased/non-payment of the annual fee