DE69435090T2 - Rechnersystem mit Steuereinheiten und Rechnerelementen - Google Patents

Rechnersystem mit Steuereinheiten und Rechnerelementen Download PDF

Info

Publication number
DE69435090T2
DE69435090T2 DE69435090T DE69435090T DE69435090T2 DE 69435090 T2 DE69435090 T2 DE 69435090T2 DE 69435090 T DE69435090 T DE 69435090T DE 69435090 T DE69435090 T DE 69435090T DE 69435090 T2 DE69435090 T2 DE 69435090T2
Authority
DE
Germany
Prior art keywords
controller
computing
iop
computing element
ces
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
DE69435090T
Other languages
English (en)
Other versions
DE69435090D1 (de
Inventor
Thomas D. Kinston Bissett
James D. Whitinsville McCollum
Robert M. Stow Glorioso
Glenn A. Upton TREMBLAY
Mario Newton Troiani
Richard D. Carlisle Fiorentino
Diane T. Hopkinton McCauley
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 DE69435090D1 publication Critical patent/DE69435090D1/de
Application granted granted Critical
Publication of DE69435090T2 publication Critical patent/DE69435090T2/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/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • 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
    • G06F11/1645Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
    • 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/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction 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
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/181Eliminating the failing redundant component
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • G06F11/185Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality and the voting is itself performed redundantly

Description

  • Hintergrund der Erfindung
  • Die Erfindung bezieht sich auf störungsfeste und störungstolerante Rechenverfahren und -apparaturen.
  • Störungsfeste Computersysteme sind in der Lage, ihren Betrieb auch im Falle von Hardwareausfällen aufrecht zu erhalten. Derartige Systeme arbeiten entweder in einem Verfügbarkeitsmodus oder einem Integritätsmodus, jedoch nicht in beiden. Ein System ist "verfügbar", wenn ein Hardwareausfall keine unakzeptablen Verzögerungen in Hinblick auf den Nutzerzugang verursacht und das im "Verfügbarkeitsmodus" arbeitende System derartig konfiguriert ist, dass es – wenn möglich – "online" bleibt, sollte es mit einem Hardware Fehler konfrontiert werden. Ein System besitzt Datenintegrität, wenn ein Hardwareausfall keine Datenverluste oder Datenbeschädigungen verursacht und das im "Integritätsmodus" arbeitende System derartig konfiguriert ist, dass Datenverluste oder -beschädigungen vermieden werden, selbst wenn das System dazu "offline" gehen muss.
  • Störungstolerante Systeme beanspruchen sowohl Verfügbarkeit als auch Integrität. Ein störungstolerantes System bleibt verfügbar und behält seine Datenintegrität, wenn es mit einem einzelnen Hardwareausfall und in einigen Fällen mit mehreren Hardwareausfällen konfrontiert wird.
  • Katastrophentolerante Systeme gehen noch einen Schritt weiter als störungstolerante Systeme und setzen voraus, dass ein Verlust einer Computer-Installation bei Naturkatastrophen oder bei durch menschliches Versagen verursachten Katastrophen nicht die Systemverfügbarkeit insgesamt unterbricht oder es zu Datenverlusten oder- beschädigungen kommt.
  • Die bisherigen Fehler-Toleranz-Verfahren enthalten einen Software-Checkpoint/Restart, Dreifach Modular Redundanz und "Pair and Spare"-Systeme.
  • Checkpoint/Restart-Systeme verwenden zwei oder mehrere Rechenelemente, welche asynchron arbeiten und verschiedene Anwendungen ausführen können. Jede Anwendung speichert periodisch ein Bild des Zustandes des Rechenelements, auf welchem sie läuft (ein sog. Checkpoint). Wenn ein Fehler in einem Rechenelement entdeckt wird, wird der "Checkpoint" dazu verwendet, die Anwendung auf einem anderen Rechenelement neu zu starten (oder auf demselben Rechenelement, sobald der Fehler behoben ist). Um ein Checkpoint-Restart-System implementieren zu können, muss jede Anwendung und/oder das Betriebssystem dahingehend modifiziert werden, dass regelmäßige Zwischenspeicherungen des Systemzustandes erfolgen. Zusätzlich muss das System "datensicherungs"-fähig sein. (D. h. es muss in der Lage sein, die Wirkungen jeglicher Rechen-Operationen, die aus dem neu zu startenden "Checkpoint" folgen, rückgängig zu machen.) Bei Dreifach-Modular-Redundanz Systemen läuft dieselbe Anwendung auf drei Rechenelementen, die in einem "Zyklus für Zyklus" Blockierschritt betrieben werden. Sämtliche Rechenelemente sind mit dem Baustein einer Abstimm-Schaltung verbunden, welche die Ausgangswerte (d. h. die Memory Interfaces) der drei Rechenelemente vergleicht und, wenn alle Ausgangswerte übereinstimmen, mit der normalen Operation fortfährt. Wenn einer der Ausgangswerte abweicht, fährt die Abstimm-Schaltung das Rechenelement herunter, welches den abweichenden Ausgangswert produziert hat. Die Abstimm-Schaltung, die zwischen den Rechenelementen und dem Speicher positioniert ist, hat entscheidenden Einfluss auf die Systemgeschwindigkeit.
  • "Pair and Spare" – Systeme enthalten zwei oder mehrere Paare von Rechenelementen, auf denen dieselbe Anwendung läuft und die in einem "Zyklus für Zyklus" Blockierschritt gesteuert werden. Ein Controller überwa ht die Ausgangswerte (d. h. die Memory Interfaces) von jedem der paarweise angeordneten Rechenelemente. Wenn der Ausgangswert abweicht, werden beide paarweisen Rechenelemente heruntergefahren.
  • Bekannte Computersysteme sind in den Dokumenten US-A-3864670 und EP-A-0026734 beschrieben.
  • Die vorliegende Erfindung sorgt für ein Computersystem, umfassend einen Controller, ein mit dem Controller verbundenes erstes Rechenelement, ein mit dem Controller verbundenes zweites Rechenelement, Mittel zum Unterbinden von I/O-Operationen durch das erste und das zweite Rechenelement und Mittel zum Übertragen der unterbundenen I/O Operationen an den Controller, wobei der Controller Mittel zum Durchführen der I/O Operationen umfasst, um – sofern vorhanden – die Ergebnisse der I/O Operationen zumindest einem der Rechenelemente zur Verfügung zu stellen, und zum Synchronisieren der Rechenelemente miteinander nach jeder I/O Operation, wobei das erste Rechenelement jeden Befehl seines Befehlssatzes in der gleichen Anzahl von Zyklen ausführt, wie sie das zweiten Rechenelement für die Ausführung dieses Befehls benötigt.
  • Zusammenfassung der Erfindung
  • Gemäß der Erfindung wird ein störungsfestes oder störungstolerantes System durch die Nutzung von mindestens zwei Rechenelementen ("CEs") geschaffen, die asynchron in Echtzeit (d. h. von Zyklus zu Zyklus) und synchron in den sog. Zwischen-Zeiten operieren. Die CEs werden in den Zwischen-Zeiten synchronisiert, welche oft genug auftreten, so dass die Anwendungen, die auf den entsprechenden CEs laufen, nicht divergieren, aber es gestattet ist, dass diese asynchron zwischen den Zwischen-Zeiten laufen. Beispielsweise könnten die CEs einmal pro Sekunde synchronisiert werden und ansonsten asynchron laufen. Da die CEs zu jeder Zwischen-Zeit resynchronisiert werden, sagt man, die CEs operieren im sog. Zwischen-Zeit Blockierschritt.
  • In besonderen Anwendungsformen, sind die Zwischen-Zeiten als die Zeiten definiert, in denen die CEs I/O Operationen anfordern. In diesen Anwendungsformen werden die CEs nach jeder I/O Operation synchronisiert und laufen zwischen den I/O Operationen asynchron. Dieses Verfahren ist anwendbar bei Systemen, in welchen mindestens zwei asynchrone Rechenelemente, auf denen dieselbe Anwendung läuft, ständig I/O Anfragen in derselben Reihenfolge generieren. Dieses Verfahren kann ferner auf Resynchronisationen im Anschluss an lediglich solche I/O Anfragen, die die Rechenumgebung modifizieren (d. h. die "Schreibanfragen"), beschränkt sein.
  • Die Zwischenzeit-Synchronisation entsprechend der Erfindung wird erreicht durch die Nutzung einer gepaarten Modular-Redundanz Architektur, welche für Anwendungen und die Software des Betriebssystems transparent ist. Im Rahmen dieser Architektur ist jedes Rechenelement gepaart mit einem Controller, auch bekannt als ein I/O Prozessor ("IOP"). Die IOPs führen jede I/O Anfrage aus, die von einem Rechenelement gestellt oder zu einem solchen weitergeleitet wird, spüren Hardwarefehler auf und synchronisieren die Rechenelemente miteinander im Anschluss an jede I/O Operation. In Systemen, in welchen I/O Anfragen nicht mit zufriedenstelleneder Häufigkeit ergehen, synchronisieren die IOPs die CEs periodisch in Überein stimmung mit sogenannten Quantenunterbrechungen, erzeugt von Inter-Processor-Zwischenverbindungsmodulen (IPI), die mit den CEs verbunden sind.
  • In einer anderen besonderen Ausführungsform der Erfindung werden die CEs anders als beim Synchronisieren basierend auf jeder einzelnen I/O Operation auf der Grundlage eines Fensters von I/O Operation synchronisiert. In diesem Verfahren wird eine Liste von I/O Operationen für jedes CE beibehalten und die CEs werden synchronisiert, wann immer ein gemeinsamer Eintrag in allen Listen erscheint. Dieses Verfahren gestattet eine Flexibilität in Hinblick auf die Reihenfolge, in welcher die I/O Anfragen generiert werden.
  • In einer noch weiteren exemplarischen Ausführungsform der Erfindung werden die CEs entweder basierend auf vom Betriebssystem periodisch generierten Signalen oder basierend auf hardwaregenerierten Unterbrechungen synchronisiert. So ist beispielsweise beim hardeware-generierten Unterbrechungsverfahren ein Prozessor von jedem Rechenelement für die Erzeugung einer Unterbrechung aller N Zyklen modifiziert, während die CEs in Abhängigkeit zu diesen Unterbrechungen synchronisiert werden.
  • Die primären Komponenten eines gepaarten Modular-Redundanz Systems enthalten Software, "off-the-shelf" IOPs, "off-the-shelf" CEs und Paare speziell zugeschnittener IPI Module, welche in den Expansions-Slots des IOP's und des CEs stecken und über ein Kabel miteinander zusammengeschaltet sind. Redundante I/O-Geräte können mit einem oder mehreren der Rechenelemente oder IOPs verbunden werden, um redundante I/O bereitzustellen und um bestimmte Merkmale anzubieten, wie beispielsweise volume shadowing von Code-Massenspeicher-Einrichtungen. Ein gepaartes Modular-Redundanz System kann jedes I/O-Gerät versorgen, das kompatibel mit einem Prozessor ist, der als ausführender IOP des Systems genutzt wird.
  • Die gepaarte Modular-Redundanz Anordnung benötigt ein Minimum an Nutzersoftware und Hardware um mindestens zwei kombinierte "off-the-shelf" Rechenelemente in Gang zu setzen für die Einbindung in störungsfeste oder -tolerante Systeme, die mit dem Industriestandard entsprechender Betriebssoftware laufen, wie z. B. Windows NT, DOS, OS/2 oder UNIX und unmodifizierten Anwendungen. Damit kann die Architektur sowohl die hohen Kosten als auch die geringe Flexiblität der gewerblich geschützten Betriebssysteme, Anwendungen und Prozessorgestaltungen in der Art und Weise ihrer bisherigen Nutzung vermeiden.
  • Ein weiterer Vorteil der gepaarten Modular-Redundanzarchitektur dieser Erfindung ist, dass sie einen gewissen Grad an Software-Störungstoleranz bietet. Die Mehrheit der Softwarefehler ist nicht algorithmischer Art. Stattdessen werden die meisten Fehler durch die Asynchronität zwischen dem Rechenelement und den I/O Geräten verursacht, was in Laufzeitbedingungen mündet. Durch eine Entkopplung der I/O-Anfragen von den Rechenelementen reduziert die gepaarte Modular-Redundanzarchitektur in entscheidender Weise die Anzahl sog. "Heisenbugscher" Software-Fehler, die aus jener Asynchronität resultieren.
  • Gemäß einem Aspekt betrifft die Erfindung die Ausbildung eines störungstoleranten oder störungsfesten Computers durch Verwendung von wenigstens einem Controller, um zumindest zwei Rechenelemente zu synchronisieren, die jeweils Taktgeber aufweisen können, die asynchron zu den Taktgebern der anderen Rechenelemente arbeiten. Eines oder mehrere Signale, die als Zwischenzeit-Signale bezeichnet werden, werden aus einer Gruppe von Signalen ausgewählt, die von den Rechenelementen erzeugt werden. Danach werden die Rechenelemente überwacht, um die Erzeugung von ausgewählten Signalen durch eines der Rechenelemente zu detektieren. Sobald ein ausgewähltes Signal detektiert wurde, wartet das System auf die Erzeugung von ausgewählten Signalen durch die anderen Rechenelemente und überträgt nach dem Empfang der gewählten Signale Echtzeit-Updates an jedes der Rechenelemente.
  • Bevorzugte Ausführungsformen der Erfindung umfassen die nachstehend aufgelisteten Merkmale. Zunächst sind I/O-Anfragen die ausgewählten Signale. Die I/O-Anfragen werden verarbeitet, um I/O-Antworten zu erzeugen, die mit den Zeit-Updates übertragen werden. Zusätzlich zu den oder anstelle der I/O-Anfragen können Quantenunterbrechungen die ausgewählten Signale sein. Die Rechenelemente zählen entweder die ausgeführten Anweisungen oder die Zyklen des Taktgebers, wie beispielsweise der Systemuhr oder der BUS-Uhr oder der I/O-Uhr und erzeugen Quantenunterbrechungen wann immer eine vordefinierte Anzahl an Anweisungen oder Zyklen erfolgt. Wenn sowohl die I/O-Anfragen als auch die Quantenunterbrechungen als die ausgewählten Signale benutzt werden, zählen die Rechenelemente die Anzahl der Anweisungen oder Zyklen, die ohne eine I/O-Anfrage erfolgen. Beispielsweise könnte ein Rechenelement derartig programmiert sein, dass es Quantenunterbrechungen erzeugt, wann immer es 100 Zyklen lang arbeitet, ohne eine I/O-Anfrage zu erzeugen.
  • In einer Ausführungsform, werden die Anweisungen gezählt, indem ein Zähler mit einem vorbestimmten Wert geladen wird, wobei der Zähler mit der I/O Anfrage gestartet wird, der Wert des Zählers heruntergezählt wird und eine Quantenunterbrechung signalisiert wird, wenn der Wert des Zählers Null erreicht. Bei einem anderen Verfahren werden Fehlersuch-Features des Prozessors genutzt, um die Qunatenunterbrechungen zu erzeugen.
  • Zur Fehlererkennung werden die ausgewählten Signale und die Begleitdaten – falls vorhanden – aus jedem der Rechenelemente verglichen. Wenn diese nicht übereinstimmen, wird ein Signal erzeugt, welches das Auftreten eines Fehlers anzeigt.
  • In einigen Ausführungsformen warten die Rechenelemente auf Zeit-Updates, indem sie mit ihren Operationen pausieren, nachdem die ausgewählten Signale produziert wurden. Die Rechenelemente nehmen ihre Operationen nach dem Empfang des Zeit-Updates wieder auf. In anderen Ausführungsformen setzen die Rechenelemente nach der Erzeugung der ausgewählten Signale den Betrieb fort.
  • Um Probleme zu vermeiden, die aus den asynchronen Aktivitäten der Rechenelemente folgen könnten, werden diese asynchronen Aktivitäten eingestellt. Die Funktionen der asynchronen Aktivitäten werden dann ausgeführt, wenn ein ausgewähltes Signal erzeugt wird. So werden beispielsweise normale "Speicher-Refresh" Funktionen deaktiviert und an ihrer Stelle jedesmal "Burst-Memory-Refreshes" ausgeführt, sobald ein ausgewähltes Signal – wie z. B. eine I/O-Anfrage, oder eine Quantenunterbrechung erzeugt wird.
  • Die Erfindung betrifft auch ein Verfahren zur Schaffung eines störungsfesten oder störungstoleranten Computers, indem ein erster Prozessor als Rechenelement, ein zweiter Prozessor als Controller bestimmt und die Rechenelemente und der Controller zur Bildung eines Modulpaares verbunden werden. Danach werden zumindest zwei Modulpaare verbunden, um einen störungssicheren oder störungstoleranten Computer zu bilden. Die für die Rechenelemente verwendeten Prozessoren müssen nicht identisch sein, sondern sie alle führen vorzugsweise jeden Befehl ihrer Befehlsgruppe in einer Anzahl von Zyklen aus, die die gleich ist wie die Anzahl von Zyklen, die die anderen Prozessoren benötigen. Normalerweise werden bei der Implementierung der Rechenelemente und der Controller Prozessoren nach Industrienorm verwendet. Für die Desastertoleranz kann zumindest eines der Modulpaare entfernt von den anderen Modulpaaren angeordnet sein. Die Controller und die Rechenelemente können derart ausgelegt sein, dass nichtmodifizierte Standardbetriebssysteme und -anwendungen auf ihnen laufen. Darüber hinaus können die Controller derart ausgelegt sein, dass auf ihnen ein erstes Betriebssystem läuft, während auf den Rechenelementen ein zweites Betriebssystem läuft.
  • Die I/O-Störungsfestigkeit wird erreicht, indem redundante I/O-Geräte mit wenigstens zwei Modulpaaren verbunden werden und zumindest identische I/O-Schreibanforderungen und Daten zu den redundanten I/O-Geräten übertragen werden. Während I/O-Schreibanforderungen nur zu einem der I/O-Geräte übertragen werden müssen, können identische I/O-Leseanforderungen zu mehr als einem der I/O-Geräte übertragen werden, um die Datenintegrität zu verifizieren. Wenn redundante I/O-Geräte mit drei oder mehr Modulpaaren verbunden werden, erlaubt die Übertragung von identischen I/O-Anforderungen die Identifizierung eines fehlerhaften I/O-Geräts.
  • Gemäß einem weiteren Aspekt betrifft die Erfindung allgemein die Isolierung von I/O-Anforderungen von Rechenoperationen in einem Computer durch die Verwendung von I/O-Weiterleitung. Normalerweise erfolgt der Zugriff auf I/O-Geräte entweder durch I/O-Anforderungen einer unteren Ebene oder durch eine direkte Adressierung der I/O-Geräte. I/O-Anforderungen einer unteren Ebene umfassen Anforderungen an das Basis-Eingabe/Ausgabesystem des Systems (z. b. BIOS), Anforderungen zum Booten von Hardware, Anforderungen zum Booten von Software und Anforderungen an die Treibersoftware der physischen Vorrichtung des Systems. Wenn ein Rechenelement eine niedere I/O-Anforderung erteilt, sieht die Erfindung den Einsatz von Software vor, um die I/O-Anforderungen an den I/O-Prozessor weiterzuleiten. Wenn das Rechenelement die physischen I/O-Geräte direkt adressiert, sieht die Erfindung vor, virtuelle I/O-Geräte vorzusehen, die die Schnittstellen der physischen I/O-Geräte simulieren. Direkt adressierte I/O-Anforderungen werden abgefangen und den virtuellen I/O-Geräten bereitgestellt. Die Inhalte der virtuellen I/O-Geräte werden als I/O-Anforderungen periodisch zu dem(den) I/O-Prozessoren) übertragen. An dem(den) I/O-Prozessoren) werden die übertragenen Inhalte der virtuellen I/O-Geräte für die physischen I/O-Geräte bereitgestellt. Nachdem die angeforderten I/O-Operationen durchgeführt wurden, werden die Ergebnisse der Operationen, sofern vorhanden, als Antwort auf die I/O-Anforderung an die Rechenelemente zurückgereicht. Normalerweise umfassen die virtuellen I/O-Geräte eine virtuelle Tastatur und ein virtuelles Display.
  • Die Erfindung betrifft auch die Erfassung und Diagnose von Fehlern in einem Computersystem, das zumindest zwei Controller umfasst, die miteinander und mit wenigstens zwei Rechenelementen verbunden sind, und zumindest zwei Rechenelemente, die mit wenigstens zwei der Controller verbunden sind. Jedes Rechenelement produziert Daten und generiert einen Wert wie beispielsweise einen Fehlerprüfcode, der sich auf die Daten bezieht. Jedes Rechenelement überträgt die Daten dann zusammen mit ihrem entsprechenden Wert zu den wenigstens zwei Controllern, mit denen es verbunden ist. Wenn die Controller die Daten und die zugehörigen Werte empfangen, übertragen sie die Werte zu den anderen Controllern. Jeder Controller führt dann Berechnungen an den Werten durch, die jedem Rechenelement entsprechen, und an den Werten, die jedem Controller entsprechen. Wenn die Ergebnisse der Berechnungen an den jedem Controller entsprechenden Werten gleich sind und wenn die Berechnungen an jedem den jedem der Rechenelemente entsprechenden Werten gleich sind, liegt keine Störung vor. Andernfalls liegt eine Störung vor. In manchen Fällen kann es sich bei der Berechnung um einen simplen Vergleich Bit für Bit handeln.
  • Wenn eine Störung bzw. ein Fehler vorliegt, wird die Störungs- bzw. Fehleranalyse versucht, indem für jeweils ein Rechenelement sämtliche der diesem einen Rechenelement entsprechenden Werte verglichen werden. Wenn die jedem Rechenelement entsprechenden Werte bei jedem Rechenelement übereinstimmen, jedoch für verschiedene Rechenelemente nicht übereinstimmen, so ist eines der Rechenelemente störungsbehaftet. Wenn die nur einem der Rechenelemente entsprechenden Werte nicht übereinstimmen, dann ist ein Pfad zu diesem Rechenelement störungsbehaftet. Wenn die mehreren Rechenelementen entsprechenden Werte nicht übereinstimmen, dann unterliegt der Controller, der mit dem nicht übereinstimmenden Rechenelement verbunden ist, einer Störung. Sobald das fehlerbehaftete bzw. gestörte Rechenelement identifiziert ist, wird es gesperrt.
  • Ein erfindungsgemäßes System kann sich auf seine volle Leistungsfähigkeit selbst wiederherstellen, nachdem ein fehlerhaftes Element (d. h. ein CE, ein IOP, eine Speichereinrichtung etc.) repariert wurde. Das System macht das, indem es den Zustand eines aktiven Elements auf ein repariertes Element überträgt und dann das reparierte Element wieder aktiviert. Inaktive oder reparierte Prozessoren werden durch den Transfer des Betriebszustands eines aktiven Prozessors oder aktiver Prozessoren durch den Controller auf den inaktiven Prozessor aktiviert. Wenn der inaktive Prozessor ein Rechenelement ist, erfolgt die Übertragung des Betriebszustands eines aktiven Rechenelements (oder aktiver Rechenelemente) durch einen Controller. Wenn der inaktive Prozessor ein Controller ist, wird de Betriebszustand eines aktiven Controllers direkt übertragen. Die Übertragung kann entweder stattfinden, während das System vorübergehend unterbrochen ist, oder als ein Prozess, der im Hintergrund abläuft.
  • Diese Wiederherstellbarkeit kann auch für online Upgrades von Hardware, Software oder beidem genutzt werden, indem beispielsweise durch Abschalten ein Ausfall eines Prozessors des Systems verursacht wird. Das Upgrade wird dann durchgeführt, indem der deaktivierte Prozessor entweder ersetzt oder modifiziert wird. Der aufgerüstete Prozessor wird dann wie vorstehend erläutert angeschaltet oder reaktiviert.
  • Die Erfindung betrifft auch ein System mit nur einem Controller und zwei Rechenelementen, bei dem ein Controller mit zwei Rechenelementen verbunden ist. Bei diesem Computersystem werden I/O-Operationen von den Rechenelementen abgefangen und an den Controller weitergeleitet. Normalerweise enthalten der Controller und die beiden Rechenelemente jeweils ein Standard-Motherboard und sie sind dafür ausgelegt, dass nichtmodifizierte Standard-Betriebssysteme und Standard-Anwendungen auf ihnen laufen können. Darüber hinaus ist der Controller dafür geeignet, dass ein erstes Betriebssystem auf ihm laufen kann, während auf den Rechensystemen gleichzeitig ein zweites Betriebssystem läuft.
  • Das einzige Controllersystem kann erweitert werden und einen zweite Controller umfassen, der sowohl mit dem ersten Controller als auch mit den beiden Rechenelementen verbunden ist. Zum Zwecke der Schaffung einer begrenzten Desasterfestigkeit können der erste Controller und eines der Rechenelemente abseits von dem zweiten Controller und dem anderen Rechenelement angeordnet und durch einen Kommunikationslink mit dem zweiten Controller und dem anderen Rechenelement verbunden sein.
  • Für eine verbesserte Verfügbarkeit und Leistung können der duale Controller und das duale Rechenelementsystem mit einem identischen zweiten System verbunden werden. Durch die beiden Systeme läuft dann ein verteilte Rechenumgebung, wobei auf einem der Systeme ein erster Teil einer ersten Anwendung und auf dem anderen System entweder eine zweite Anwendung oder ein zweiter Teil der ersten Anwendung läuft.
  • In einer weiteren Ausführungsform betrifft die Erfindung ein Computersystem, das drei Controller umfasst, die miteinander verbunden sind, und drei Rechenelemente, die jeweils mit unterschiedlichen Paaren der drei Controller verbunden sind. Wie die anderen Systeme, betrifft auch dieses System das Abfangen von I/O-Operationen durch die Rechenelemente und deren Weiterleitung an die Controller zwecks Verarbeitung. Für die Desastertoleranz sind der erste Controller und eines der Rechenelemente an einer von den restlichen Controllern und Rechenelementen entfernten Stelle angeordnet oder es ist jedes Paar aus Controller/Rechenelement an einer anderen Stelle angeordnet.
  • Ein desastertolerantes System wird geschaffen durch die Verbindung von wenigstens zwei der vorstehend beschriebenen Controllersysteme. Die drei Controllersysteme sind an voneinander entfernten Orten angeordnet und durch einen Kommunikationslink miteinander verbunden.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines teilweise störungsfesten Systems.
  • 2 ist ein Blockdiagramm der Systemsoftware des Systems aus 1.
  • 3 ist einen Ablaufplan des von einem IOP-Monitor der Systemsoftware genutzen Verfahrens nach 2.
  • 4 ist ein Blockdiagramm eines IPI-Moduls des Systems aus 1.
  • 5 ist eine Zustandsübergangstabelle des Systems aus 1.
  • 6 ist ein Blockdiagramm eines fehlertoleranten Systems.
  • 7 zeigt ein Blockdiagramm eines gegliederten störungsfesten Systems.
  • 8 ist ein Blockdiagramm eines störungstoleranten Systems.
  • 9 ist ein Ablaufplan eines Fehlerdiagnoseverfahrens, das durch die IOPs des Systems nach 8 genutzt wird.
  • 10 ist ein Blockdiagramm eines katastrophentoleranten Systems.
  • Beschreibung der bevorzugten Ausführungsformen
  • Wie in 1. dargestellt, enthält ein störungsfestes System 10 einen I/O-Prozessor ("IOP") 12 und zwei Rechenelemente ("CEs") 14a, 14b (gemeinsam bezeichnet als CEs 14). Da das System 10 nur einen einzelnen IOP 12 enthält, kann es sich nach einem Fehler im IOP 12 nicht wiederherstellen und ist deshalb nicht vollständig störungsfest.
  • IOP 12 enthält zwei Inter-Prozessor-Zwischenverbindungsmodule (IPI) 16a, 16b, die entsprechend mit korrespondierenden IPI Modulen 18a, 18b der CEs 14 über Kabel 20a, 20b verbunden sind. Das IOP 12 enthält außerdem einen Prozessor 22, ein Speichersystem 24, zwei Festplattenlaufwerke 26, 28 und ein Netzanschlussgerät 30. Auf ähnliche Weise enthält jedes CE 14 einen Prozessor 32, ein Speichersystem 34 und eine Stromversorgung 36. Separate Stromversorgungen 36 werden benutzt, um die Störungsfestigkeit im Falle eines Stromversorgungsausfalles sicherzustellen. Die Prozessoren 32a, 32b sind insoweit "identisch", als dass für jede Instruktion, die für eine Ausführung durch den Prozessor 32a benötigte Anzahl der Zyklen mit der Anzahl der für eine Ausführung derselben Instruktion durch den Prozesser 32b benötigten Zyklen übereinstimmt. In der dargestellten Ausführungsform werden in System 10 auf Intel 486 Standard basierende Motherboards für die Prozessoren 22, 32 und 4 MB Speicherkapazität für jedes der Speichersysteme 24,34 verwendet.
  • Auf IOP 12 und CEs 14 läuft unmodifizierte System- und Anwendungssoftware, wobei die Festplatte 26 als Bootdisk für den IOP und die Festplatte 28 als Bootdisk für die CEs 14 verwendet wird. In wirklich störungsfesten oder -toleranten Systemen, die mindestens 2 IOPs enthalten, würde auch jede Festplatte doppelt vorhanden sein.
  • Bei der dargestellten Ausführungsform wird als Betriebssystem für den IOP 12 und die CEs 14 DOS verwendet. Jedoch können auch andere Betriebssysteme zum Einsatz kommen. Außerdem kann auf dem IOP 12 ein anderes Betriebssystem laufen, als auf den CEs 14. So kann beispielsweise auf IOP 12 Unix laufen, während auf den CEs 14 DOS läuft. Dieses Verfahren ist vorteilhaft, weil es den CEs gestattet, von Betriebssystemen auf die Peripherie-(Geräte) zuzugreifen, welches diese Peripherien-(Geräte) nicht unterstützt. Läuft auf den CEs 14 beispielsweise ein Betriebssystem, welches keine CD-ROM-Laufwerke unterstützt und läuft dafür aber auf dem IOP ein Betriebssystem, das dieses kann, so können die CEs auf das CD-ROM Laufwerk zugreifen, indem sie I/O Anfragen ausgeben, die zu denjenigen identisch sind, die z. B. für Festplattenzugriffe genutzt werden. Der IOP 12 würde dann die Übersetzung der I/O Anfrage in eine für den CD-ROM Zugriff geeignete Anfrage durchführen.
  • In Bezug auf 2 enthält das System 10 eine spezialisierte Systemsoftware 40 welche das Booten und Synchronisieren der CEs 14 kontrolliert, die lokale Zeit in den CEs ausschaltet, alle I/O-Anfragen von den CEs 14 zum IOP 12 für die Ausführung umleitet und die Ergebnisse der I/O Anfragen – sofern vorhanden – vom IOP zu den CEs zurückführt.
  • Die Systemsoftware 40 enthält zwei Sätze von auf ROM basierenden IPI BIOS 42, welche jeweils im IPI Modul 18 eines CE 14 angeordnet sind. Die IPI BIOS 42 werden bei Aktivitäten in Bezug auf das Hochfahren und Synchronisieren benutzt. Wenn ein CE 14 hochgefahren wird, ersetzen die IPI BIOS 42 die I/O Unterbrechungsadressen in der BIOS Unterbrechungstabelle mit Adressen, die von CE Treibern 44 kontrolliert werden. Die Unterbrechungsadressen, die ersetzt werden, enthalten jene, die den Videobetrieb, den Fixed-Disc-Betrieb, den seriellen Kommunikationsbetrieb, den Keyboardbetrieb und den Tageszeitbetrieb umfassen.
  • Die IPI BIOS 42 schalten auch den normalen Memory-Refresh aus, um sicherzustellen, dass jeglicher Memory-Refresh welcher sich auf die Anzahl der Zyklen, während derer ein CE 14 eigentlich arbeitet, auswirkt, durch die Systemsoftware kontrolliert werden kann. Der Memory-Refresh wird benötigt, um die Speicherintegrität beibehalten zu können. Bei bekannten Refresh-Verfahren wird der Speicher periodisch erneuert, wobei je ein Speicherblock am Ende einer Refresh-Periode erneuert ist. Die Dauer der Refresh-Periode ist so ausgewählt, dass der ganze Speicher innerhalb des Refresh-Limits des Speichers erneuert wird. Wenn ein Speicher beispielsweise 256 Blöcke und ein 8 ms Refresh-Limit hat, dann ist folglich die Refresh-Periode 31.25 μs (8 ms/256).
  • In der beschriebenen Ausführungsform schaltet das IPI BIOS 42 den Memory-Refresh dadurch aus, dass ein vom Intel 486 Motherboard benutzter Zähler gesetzt wird, um den Memory-Refresh in einem Modus zu steuern, was eine Steuereingabe zum Zähler erfordert, um diesen auf Vorwärtszählen zu schalten. Da der Steuereingang typischerweise mit der Stromversorgung verbunden ist, verändert sich dieser Steuereingang niemals, und der Zähler ist wirksam ausgeschaltet.
  • Die zwei CE-Treiber 44 der Systemsoftware 40 führen den Memory-Refresh durch stoßartiges Erneuern von mehreren Speicherblöcken bei jeder Generierung einer I/O-Anfrage oder einer Quantenunterbrechung durch. Die CE-Treiber 44 sind auf der CE Boot-Diskette 28 gespeichert und werden durch die CEs 14 gestartet. Zusätzlich zur Durchführung der stoßartigen Speichererneuerung fangen die CE-Treiber die I/O-Anfragen an das System BIOS ab und leiten diese durch die IPI Module 18 zur Ausführung weiter an den IOP 12. Die CE-Treiber 44 antworten auch auf die Unterbrechungsanfragen der IPI Module 18, schalten die Systemuhr aus und kontrollieren -basierend auf Informationen von der IOP Kontrolleinrichtung 48 – die Tageszeit der CEs 14.
  • Ein auf der IOP Boot-Disk 26 befindlicher IOP-Treiber 46, der vom IOP 12 gestartet wird, reagiert auf die I/O-Anfragen von den CEs 14 indem er diese zur Verarbeitung an einen IOP-Monitor 48 umleitet damit die Ergebnisse vom IOP-Monitor 48 verarbeitet und an die CEs 14 übertragen werden können. Der IOP Treiber kommuniziert mit dem CE Treiber mittels eines Paket-Protokolls.
  • Der IOP-Monitor 48 ist auf der Boot-Diskette 26 platziert und wird vom IOP 12 gestartet. Der IOP-Monitor 48 kontrolliert das System 10 und führt die aktuellen I/O Anfragen durch, um die Ergebnisse zu produzieren, die vom IOP-Treiber 46 zu den CEs 14 übertragen werden.
  • Die Systemsoftware 40 umfasst auch die Konsolensoftware 49, die auf dem IOP 12 läuft und die Nutzerkontrolle des Systems 10 ermöglicht. Über die Konsolensoftware 49 kann ein Nutzer Resets, Boots und Synchronisationen einer CE 14 vornehmen. Der Nutzer kann darüber hinaus eine oder beide CEs 14 auf ein automatisches Booten (autoboot) und/oder ein automatisches Synchronisieren (Autosync) schalten, nachdem ein Reset durchgeführt wurde, oder nach einem Startup. Die Fähigkeit, jede CE 14 kontrollieren zu können, ist sowohl während des normalen Betriebes, als auch zu Testzwecken nützlich. Mittels der Konsolensoftware 49 kann der Nutzer das System 10 auch entweder in einen Integritätsmodus, in welchem der IOP-Monitor 48 beide CEs 14 herunterfährt, sobald sie mit einem nicht kompensierbaren Fehler konfrontiert wird, in einen ersten Verfügbarkeitsmodus, in welchem der IOP-Monitor 48 die CE 14a ausschaltet, wenn sie mit einem nicht kompensierbaren Fehler konfrontiert wird, oder in einen zweiten Verfügbarkeitsmodus, in welchem der IOP-Monitor 48 die CE 14b ausschaltet, wenn sie mit einem nicht kompensierbaren Fehler konfrontiert wird, versetzen. Schließlich ermöglicht es die Konsolensoftware 49 dem Nutzer, den Systemstatus des Systems 10 abzufragen. In einer alternativen Ausführungsform könnte die Konsolensoftware 49 auch einen separaten Prozessor nutzen, der mit dem IOP 12 kommuniziert.
  • Auf jedem CE 14 läuft eine Kopie der gleichen Anwendung und des gleichen Betriebssystems, das auch auf dem anderen CE 14 läuft. Darüber hinaus sind auch die Inhalte des Speichersystems 34a und 34b die gleichen und die Operationsumgebung der CEs 14 ist bei jedem Synchronisationstakt die gleiche. Folglich sollte der IOP-Monitor 48 auch identische Sequenzen der I/O-Anfragen von den CEs 14 erhalten.
  • 3 zeigt die Prozesse des IOP-Monitors 48 und überwacht die I/O-Anfragen gemäß einer Prozedur 100. Zu Beginn wartet der I/O Monitor 48 auf eine I/O Anfrage von einem der CEs 14 (Schritt 102). Nach dem Empfang eines I/O Anfragepakets von beispielsweise CE 14b, wartet der IOP-Monitor 48 entweder auf eine I/O Anfrage von CE 14a, oder auf das Ende der Timeout-Periode (Schritt 104). Da das System 10 mit dem DOS Betriebssystem arbeitet, welches die Ausführung einer Anwendung während einer I/O-Anfrage anhält, wird gewährleistet, dass der IOP-Monitor 48 keine I/O Anfrage von CE 14b empfängt, während sie auf eine Anfrage von CE 14a wartet (Schritt 104).
  • Als nächstes prüft der IOP-Monitor 48, ob die Timeout-Periode beendet ist (Schritt 106). Falls nicht, d. h. wenn also ein I/O-Anfragepaket von CE 14a eingetroffen ist, vergleicht der IOP-Monitor 48 die Prüfsummen der Pakete (Schritt 108) und bearbeitet die I/O-Anfrage, wenn die Prüfsummen übereinstimmen (Schritt 110). Nach der Bearbeitung der I/O-Anfrage gibt der IOP Monitor eine Anfrage zur System BIOS des IOP 12 in Bezug auf die aktuelle Tageszeit ab (Schritt 112).
  • Nach dem Empfang der Tageszeit assembliert die IOP Kontrolleinrichtung 48 ein IPI Paket, welches die Tageszeit und – falls vorhanden – die Ergebnisse der I/O Anfragen enthält (Schritt 114), und sendet dieses IPI Paket an den IOP Treiber 46 (Schritt 116) zur weiteren Übertragung an die CEs 14. Wenn die CEs 14 das IPI Paket empfangen, verwenden sie die übertragene Tageszeit, um ihre lokale Taktgeber zu aktualisieren, welche ansonsten – wie schon beschrieben – ausgeschaltet sind.
  • Wie von DOS vorausgesetzt, wird die Ausführung in den CEs 14 ausgesetzt, bis der IOP-Monitor 48 die Ergebnisse der I/O Anfrage durch den IOP Treiber 46 zurückgibt. Da, bevor die Ausführung wieder aufgenommen wird, die Tageszeiten beider CEs 14 auf einen gemeinsamen Wert (die übertragene Tageszeit des IPI Pakets) hin aktualisiert werden, können die CEs in zeitlicher Synchronisation mit der übertragenen und als Zwischen-Zeit bezeichneten Tageszeit gehalten werden. Wenn ein multitaskmäßig operierendes System in Betrieb wäre, würde eine Ausführung in den CEs 14 nicht ausgesetzt werden, während die IOP Kontrolleinrichtung 48 die I/O Anfrage durchführt. Stattdessen würde die Arbeit in den CEs 14 nur bis zum Empfang einer Bestätigung ausgesetzt werden, welcher anzeigt, dass der IOP-Monitor 48 damit begonnen hat, die I/O Anfrage zu bearbeiten (Schritt 110). Die Bestätigung enthielte dann die Tageszeit und würde von den CEs 14 dazu verwendet werden, um ihren lokalen Taktgeber zu aktualisieren.
  • Nach dem Senden des IPI Pakets zum IOP Treiber 46 prüft der IOP Monitor 48, ob beide CEs 14 online sind (Schritt 118) und wartet, falls dem so ist, auf eine weitere I/O Anfrage von einem der CEs 14 (Schritt 102).
  • Wenn die Timeout-Periode beendet ist (Schritt 106), schaltet die IOP Kontrolleinrichtung 48 das CE 14 ab, welches nicht geantwortet hat (Schritt 119) und bearbeitet die I/O Anfrage (Schritt 110).
  • Wenn es eine Abweichung zwischen der Prüfsumme der Pakete von den CEs 14 gibt (Schritt 108), prüft der IOP-Monitor 48, ob sich das System 10 im Verfügbarkeitsmodus oder im Integritätsmodus befindet (Schritt 120).
  • Falls das System 10 im Verfügbarkeitsmodus operiert, schaltet der IOP-Monitor 48 das passende CE 14 aus, basierend auf dem gewählten Verfügbarkeitsmodus (Schritt 122) und bearbeitet die I/O-Anfrage (Schritt 110). Danach prüft der IOP-Monitor 48, ob beide CEs 14 online sind (Schritt 118) und wartet dann auf eine I/O Anfrage von dem CE 14, das online ist, vorausgesetzt, das ausgeschaltete CE 14 wurde nicht repariert oder reaktiviert (Schritt 124). Da das System 10 nicht länger störungsfest ist, wenn eine I/O Anfrage empfangen wird, bearbeitet der IOP-Monitor 48 unverzüglich die I/O Anfrage (Schritt 110).
  • Wenn das System 10 im Integritätsmodus arbeitet, wenn eine Abweichung entdeckt wird, wird der IOP-Monitor 48 beide CEs ausschalten (Schritt 126) und stoppt die Abarbeitung (Schritt 128).
  • Wie weiter in 1 und 2 dargestellt, führt die System-BIOS, sobald eine Anwendung oder das Betriebssystem von beispielsweise CE 14a einen Nicht-I/O Aufruf an die System-BIOS tätigt, die Anfrage aus und führt die Ergebnisse zurück zu der Anwendung, ohne dabei die Systemsoftware 40 anzusprechen. Gleichwohl unterbricht der CE Treiber 44a die I/O Anfrage, wenn die Anwendung oder das Betriebssystem einen I/O BIOS Aufruf tätigen. Nachdem Abfangen der I/O Anfrage paketiert der CE Treiber 44a die I/O Anfrage in ein IPI Paket und übermittelt das IPI Paket an den IOP 12.
  • Wenn das IPI Modul 16a des IOP 12 die Übertragung eines IPI Pakets von CE 14a registriert, generiert es eine Unterbrechung am IOP Treiber 16. Der IOP Treiber liest daraufhin das IPI Paket.
  • Wie bereits oben erläutert, antwortet der IOP-Monitor 48 den IPI Paketen von CE 14a entsprechend der Prozedur 100. Wie auch schon aufgezeigt, überträgt der IOP Treiber 46 schließlich ein IPI Paket, welches die Ergebnisse der I/O Anfrage und die Tageszeit enthält zu den CEs 14, vorausgesetzt, es treten keine Hardwarefehler auf.
  • Die IPI Module 18 der CEs 14 empfangen das IPI Paket vom IOP 12. Die CE Treiber 44 entpacken das IPI Paket, aktualisieren die Tageszeit der CEs 14 und geben die Kontrolle der CEs 14 zurück an die auf den CEs 14 laufende Anwendung, oder das Betriebssystem.
  • Wenn keine I/O Anfragen innerhalb eines vorgegeben Zeitintervalls erfolgen, generiert das IPI Modul 18 eines CE 14 eine sogenannte Quantenunterbrechung, welche den CE Treiber 44 der CEs 14 an spricht. In Erwiderung dessen erzeugt der CE Treiber 44 ein Quantenunterbrechungs-IPI-Paket und überträgt dieses zum IOP 12. Der IOP-Monitor 48 behandelt das Quantenunterbrechungs-IPI-Paket als ein IPI Paket ohne eine I/O Anfrage. Folglich registriert der IOP-Monitor 48 das hereinkommende Quantenunterbrechungspaket (Schritt 102, 3) und veranlasst eine Anfrage an die System BIOS des IOP 12 nach der aktuellen Tageszeit (Schritt 112, 3), wenn ein passendes Quantenunterbrechungs-IPI-Paket vom anderen CE 14 empfangen wird (Schritte 104, 106 und 108, 3), veranlasst eine Anfrage an die System BIOS von IOP 12 nach der geltenden Tageszeit (Schritt 112, 3). Der IOP-Monitor 48 packt dann die aktuelle Tageszeit in ein Quanten-Antwort-IPI-Paket (Schritt 114, 3), welches der IOP Treiber 46 dann zu den CEs 14 sendet (Schritt 116, 3). Die CE Treiber 44 reagieren ihrerseits auf das Quanten-Antwort-IPI-Paket, indem sie die Tageszeit aktualisieren und die Kontrolle über die CEs 14 an die auf den CEs 14 laufende Anwendung oder das Betriebssystem zurückgeben.
  • Falls der IOP-Monitor 48 kein Quantenunterbrechungs-IPI-Paket vom anderen CE 14 innerhalb einer vordefinierten Timeout-Periode empfängt (Schritt 106, 3), reagiert der IOP-Monitor 48 indem er das nicht antwortende CE 14 abschaltet.
  • Wie in 1 gezeigt, stellen die IPI Module 16, 18 und die Kabel 20 die gesamte Hardware bereit, die erforderlich ist, um ein störungsfestes System herzustellen, das von auf Intel 486 Standard basierenden Motherboards für die Implementierung der Prozessoren 22, 32 verwendet wird. Ein IPI Modul 16 und ein IPI Modul 18, welche unter Verwendung identischer Boards implementiert sind, führen jeweils gleiche Funktionen aus.
  • Wie in 4 dargestellt, enthält ein IPI Modul 18 eine Kontrollschaltung 50, die I/O-Anfragen und -Antworten zwischen dem System BUS des Prozessors 32 eines CE 14 und einer parallelen Schnittstelle 52 des IPI Moduls 18 überträgt. Die parallele Schnittstelle 52 kommuniziert ihrerseits über ein Kabel 20 mit einer parallelen Schnittstelle auf einem IPI-Modul 16. Die parallele Schnittstelle 52 umfasst einen 16 Bit Datenausgangs-Anschluss 54, einen 16 Bit Dateneingangs-Anschluss 56 und einen Steuerungsanschluss 58. Das Kabel 20 ist dahingehend konfiguriert, dass der Datenausgangs-Anschluss 54 mit dem Daten-Eingangs-Anschluss des IPI Moduls 16 verbunden ist, der Dateneingangs-Anschluss 56 mit dem Datenausgangs-An schluss des IPI Moduls 16 und der Steuerungsanschluss 58 mit dem. Steuerungsanschluss des IPI Moduls 16 verbunden ist. Der Steuerungsanschluss 58 führt ein Handshake-Protokoll zwischen dem IPI Modul 18 und dem IPi Modul 16 aus.
  • Die Kontrollschaltung 50 ist auch mit einem IPI BIOS ROM 60 verbunden. Beim Startup überträgt die Kotrollschaltung 50 das IPI BIOS 42 (2), den Inhalt des IPI BIOS ROM 60 über den System BUS des Prozessors 32 zum Prozessor 32.
  • Ein ebenfalls auf dem IPI Modul 18 befindlicher QI-Zähler 62 generiert Quantenunterbrechungen, wie oben erläutert. Der QI-Zähler 62 enthält einen Takteingang 64, der mit der Systemuhr des Prozessors 32 verbunden ist und einen Steuereingang 66, der mit der Kontrollschaltung 50 verbunden ist. Der Steuereingang 66 wird zur Aktivierung und Rücksetzung des Zählerwertes des QI-Zählers 62 verwendet. Wenn der QI-Zähler 62 aktiviert ist, verringert er den Zählerwert um jeweils eins pro Zyklus der Systemuhr des Prozessors 32. Sobald der Zählerwert 0 erreicht, erzeugt der QI-Zähler eine Quantenunterbrechung, die – wie bereits erläutert – den CE Treiber 44 aktiviert (2).
  • Der CE Treiber 44 deaktiviert den QI-Zähler 62 am Anfang einer jeden I/O-Übertragung. Der CE Treiber 44 deaktiviert den QI-Zähler 62 durch eine I/O-Schreibanforderung an einer ersten Adresse, bekannt als die QI-Deaktivierungsadresse. Die Kontrollschaltung 50 erkennt die I/O-Schreibanforderung und deaktiviert den QI-Zähler 62 über den Steuereingang 66. Da dieser besondere I/O-Schreibvorgang allein für Kontrollzwecke gedacht ist, leitet ihn die Kontrollschaltung 50 nicht zur parallelen Schnittstelle 52. Am Schluss jeder I/O Übertragung setzt der CE Treiber 44 den QI-Zähler 62 zurück und aktiviert diesen mittels einer I/O-Schreibanforderung an einer zweiten Adresse, bekannt als QI-Aktivierungsadresse. Die Kontrollschaltung 50 reagiert durch Zurücksetzen und Aktivieren des QI-Zählers 62.
  • In einer alternativen Anwendung werden Quantenunterbrechungen durch die Nutzung der Fehlersuchfunktion oder anderer Features, die im Prozessor 32 verfügbar sind, erzeugt. Einige für gewöhnlich erhältliche Prozessoren enthalten Fehlersuch- oder Fangstellen-Anweisungen, die Fehler durch die Übertragung der Steuerung des Prozessors auf ein festgelegtes Programm nach dem Ablauf einer ausgewählten Anzahl von auf die Fangstellen-Anweisung folgenden weiteren Anweisungen abfangen. Bei diesem Verfahren veranlasst der CE Treiber 44 jedesmal, wenn er die Kontrolle des Prozessors an die Anwendung oder das Betriebssystem zurückgibt, eine Fangstellen-Anweisung, um anzuzeigen, dass die Kontrolle des Prozessors 32 zum CE Treiber 44 nach dem Ablauf von beispielsweise 300 Anweisungen gegeben werden soll. Nachdem der Prozessor 32 die aufgezeigten 300 Anweisungen abgeschlossen hat, führt die Fangstellen-Anweisung zur Rückgabe der Kontrolle des Prozessors 32 an den CE Treiber 44. Für den Fall, dass eine I/O-Anfrage den CE Treiber 44 vor dem Abschluss der aufgezeigten Anzahl an Anweisungen aktiviert, veranlasst der CE Treiber 44 eine Anweisung, die die Fangstellen-Anweisung aufhebt.
  • Das IPI-Modul 18 wird auch dazu verwendet, um ein offline-CE 14 zu aktivieren. Wie noch aufzuzeigen sein wird, wird der Inhalt des Speichersystems 34 des aktiven CE 14 in das Speichersystem des 34 des offline-CE 14 kopiert, bevor das offline-CE 14 aktiviert wird. Um die Auswirkungen dieses Kopiervorgangs am aktiven CE 14 zu minimieren, ist es dem Prozessor 32 des aktiven CE 14 gestattet weiterzuarbeiten und der Speicher wird nur in solchen Zyklen kopiert, in denen der System BUS des Prozessors 32 des aktiven CE 14 nicht benutzt wird.
  • Um den Prozessor 32 in die Lage zu versetzen, weiterzuarbeiten, während der Speicher kopiert wird, legt das IPI Modul 18 die Speicherschreibvorgänge durch den Prozessor 32 in Adressen ab, die bereits zum offline-CE 14 kopiert wurden. Um dies durchzuführen, regelt die Kontrollschaltung 50 den System BUS und speichert – falls der Prozessor 32 an einer Speicheradresse schreibt, die bereits kopiert wurde – diese Adresse in einem FIFO 68. Sobald der Speichertransfer abgeschlossen, oder der FIFO 68 voll ist, werden die Inhalte der Speicherstellen zusammen mit den im FIFO 68 abgelegten Speicheradressen zum offline-CE 14 kopiert und der FIFO 68 entleert. Bei anderen Anwendungen ist der FIFO 68 dahingehend modifiziert, dass er sowohl die Speicheradressen, als auch die Inhalte der mit den Adressen zusammengeschlossenen Speicherstellen oder die Blockadressen der Speicherblocks, zu denen die geschriebenen Speicheradressen gehören, ablegt.
  • Das IPI Modul 18 kümmert sich auch um Nicht-BIOS-I/O-Anfragen. In manchen Computersystemen ist das BIOS zu langsam, um effektiv I/O-Operationen durchzuführen, wie z. B. Videoanzeigen. Als Ergebnis gestatten es einige weniger strukturierte oder weniger disziplinierte Betriebssysteme, wie etwa DOS oder UNIX den Anwendungen, das BIOS zu überlisten und Nicht-BIOS-I/O Anfragen durch das direkte Lesen von oder Schreiben in den Adressen, die mit I/O Geräten verbunden sind, durchzuführen. Diese Nicht-BIOS-I/O-Anfragen, die nicht durch das Ändern der Systemunterbrechungstabelle abgefangen werden können, so wie dies beispielsweise im Zusammenhang mit I/O-Disk Lese- und Schreibvorgängen erfolgt, sind für ein System, in welchem die Synchronisation eine enge Kontrolle der I/O-Schnittstellen verlangt, problematisch.
  • Um dieses Problem zu beheben und um sicherzustellen, dass selbst Nicht-BIOS-I/O-Anfragen durch den IOP 12 isoliert und verwaltet werden können, enthält das IPI Modul 18 virtuelle I/O-Geräte, die die Hardwareschnittstellen physischer I/O-Geräte nachahmen. Diese virtuellen I/O-Geräte umfassen ein virtuelles Display 70 und ein virtuelles Keyboard 72. Falls nötig, können auch andere virtuelle I/O-Geräte, wie z. B. eine virtuelle Maus, oder virtuelle serielle und parallele Anschlüsse verwendet werden.
  • In der Praxis überwacht die Kontrollschaltung 50 den System BUS in bezug auf Lese- oder Schreiboperationen, die an Adressen gerichtet sind, die mit Nicht-BIOS-I/O-Anfragen an System-I/O-Geräten verbunden sind. Sobald die Kontrollschaltung 50 solch eine Operation entdeckt, speichert die Kontrollschaltung die für eine Rekonstruktion der Operation am entsprechenden virtuellen Gerät notwendigen Information. So legt die Kontrollschaltung 50 beispielsweise, wenn sie eine an die mit dem Display 70 verbundene Adresse gerichtete Schreiboperation registriert, die für eine Rekonstruktion dieser Operation am virtuellen Display 70 erforderlichen Informationen ab. Jedes mal, wenn eine BIOS-I/O-Anfrage oder eine Quantenunterbrechung auftritt, scannt der CE Treiber 44 die virtuellen I/O Geräte und stellt – wenn die virtuellen Geräte nicht leer sind – die in den virtuellen Geräten abgelegten Informationen in einem IPI-Paket zusammen und schickt dieses zum IOP 12. Dieser behandelt das Paket unter Nutzung des oben erörterten Verfahrens 100 wie eine BIOS-I/O-Anfrage. Wenn die Kontrollschaltung 50 einen an ein virtuelles I/O-Gerät adressierten Lesevorgang registriert, assembliert die Kontrollschaltung 50 die Leseanfrage in einem IPI Paket zur Weiterverarbeitung durch IOP 12. Der IOP 12 behandelt das IPI-Paket wie eine Standard-BIOS-I/O-Anfrage. Wie in 5 gezeigt, operiert jedes CE 14 ständig in einem von acht Zuständen und das System 10 – da es nur eine limitierte Anzahl an zulässigen Zustands-Kombinationen gibt – ständig in einem von 14 Zuständen. Die Haupt-CE-Operationszustände sind OFFLINE, RTB (bereit zum Booten), BOOTING, ACTIVE, RTS (bereit zum Synchronisieren), WAITING, M_SYNC (Synchronisieren als Master) und S_SYNC (Synchronisieren als Slave). Die IOP-Kontrolleinrichtung 48 verändert die Operationszustände der CEs 14 basierend auf dem Status des Systems 10 und der Nutzerkommandos von der Konsolensoftware 49. Über die Konsolensoftware kann ein Nutzer ein CE 14 jederzeit zurücksetzen. Wann immer ein Nutzer ein CE 14 zurücksetzt, oder eine Störung im CE 14 auftritt, lässt die IOP-Kontrolleinrichtung 48 das CE 14 in den OFFLINE-Zustand wechseln.
  • Beim Startup operiert das System 10 mit beiden CEs 14b OFFLINE (Zustand 150). Das System 10 arbeitet in den oberen Zuständen der 5 (Zustände 152162), wenn das CE 14a vor CE 14b zu arbeiten anfängt und in den unteren Zuständen (Zustände 166176), wenn CE 14b zuerst den Betrieb aufnimmt. Wenn beide CE 14 simultan zu operieren beginnen, wird dasjenige CE 14 als zuerst operierendes behandelt, welches als erstes von der IOP-Kontrolleinrichtung 48 erkannt wird.
  • Wenn ein CE 14 durch eine Boot-Anfrage anzeigt, dass es bereit zum booten ist, wechselt der Zustand des CE 14 zu RTB, sofern das CE 14 nicht auf Autoboot gesetzt ist, oder zu BOOTING, sofern es auf Autoboot gesetzt ist. Falls z. B. CE 14a eine Bootanfrage veranlasst, wenn beide CEs 14 OFFLINE sind, und CE 14a ist nicht auf Autoboot gesetzt, dann wechselt der Zustand von CE 14a über zu RTB (Zustand 152). Danach wartet der IOP-Monitor darauf, dass der Nutzer über die Konsolensoftware 49 das CE 14a bootet. Sobald der Nutzer das CE 14a bootet, wechselt der Zustand von CE 14a über zu BOOTING (Zustand 154). Wenn der Nutzer das CE 14a zurücksetzt, wechselt der Zustand des CE 14a über zu OFFLINE (Zustand 150).
  • Falls beide CEs 14 offline sind, wenn CE 14a eine Boot-Anfrage und CE 14a auf Autoboot gesetzt ist, wechselt der Zustand von CE 14a über zu BOOTING (Zustand 154). Falls CE 14a erfolgreich bootet, wechselt der Zustand von CE 14a über zu ACTIVE (Zustand 156).
  • Wenn CE 14a ACTIVE ist und CE 14b eine Boot-Anfrage ausgibt, oder wenn CE 14b bereits eine Boot-Anfrage ausgegeben hat, während der Zustand von CE 14a gerade von OFFLINE zu ACTIVE wechselte (Zustände 152156), wechselt der Zustand von CE 14b über zu RTS (Zustand 158) sofern CE 14b auf Autosynchronisation gesetzt ist und anderenfalls zu WAITING (Zustand 160). Falls der Zustand von CE 14b zu RTS wechselt, wartet die IOP-Monitor auf den Nutzer, um ein Synchronisations-Kommando anzugeben. Sofern der Nutzer ein solches Kommando veranlasst, wechselt der Zustand von CE 14b über zu WAITING. (Zustand 160).
  • Wenn sich CE 14b im WAITING-Zustand befindet, kopiert der IOP-Monitor 48 die Inhalte des Speichersystems 34a von CE 14a in das Speichersystem 34b von CE 14b. Sobald der Speichertransfer abgeschlossen ist, wartet der IOP-Monitor 48 auf CE 14a, um eine Quantenunterbrechung oder ein I/O-Anfrage-IPI-Paket zu übertragen. Nach dem Erhalt eines solchen Pakets wechselt der IOP-Monitor 48 den Zustand von CE 14a zu M_SYNC und den Zustand von CE 14b zu S_SYNC (Zustand 162) und synchronisiert die CEs 14. Diese Synchronisation reagiert auf jede Speicherveränderung, die aufgetreten ist, während der IOP-Monitor 48 auf CE 14a wartete, um eine Quantenunterbrechung oder ein I/O Anfrage-IPI-Paket zu übertragen. Nach der Beendigung der Synchronisation, wechseln die Zustände beider CEs 14 über zu ACTIVE (Zustand 164) und das System 10 kann als vollständig betriebsbereit angesehen werden.
  • In einer alternativen Anordnung wartet der IOP-Monitor 48 nicht auf den Abschluss des Speichertransfers bevor sie den Zustand des CE 14a in M_SYNC und den Zustand von CE 14b in S_SYNC (162) ändert. Stattdessen macht der IOP-Monitor 48 diese Statusänderung erst nach dem Erhalt eines IPI-Pakets von CE 14a und führt den Speichertransfer als Teil des Synchronisationsprozesses durch.
  • Ähnliche Zustandsübergänge treten auf, wenn CE 14b als erstes eine Boot-Anfrage veranlasst. Vorausgesetzt, CE 14b ist nicht auf Autoboot gesetzt, geht CE 14b folglich von OFFLINE (Zustand 150) über zu RTC (Zustand 166) über zu BOOTING (Zustand 168) über zu ACTIVE (Zustand 170). Ist CE 14b auf ähnliche Weise erst einmal ACTIVE, geht CE 14a – und vorausgesetzt es ist nicht auf Autosync gesetzt – vom OFFLINE (Zustand 170) entsprechend über zu RTS (Zustand 172) über zu WAITING (Zustand 174) über zu S_SYNC (Zustand 176) über zu ACTIVE (Zustand 164).
  • In anderen Ausführungsformen der Erfindung, wie zum Beispiel in 6 dargestellt, beinhaltet ein fehlerfestes System 200 zwei IOPs 202 und zwei CEs 204. Jedes CE 204 ist über eine IPI Karte 206 und ein Kabel 208 mit jeweils einer IPI Karte 210 der IOPs 202 verbunden. Die IOPs 202 sind redundant über IPI Karten 210 und Kabel 212 miteinander verbunden. Da jede Komponente des Systems 200 eine redundante Backup-Komponente hat, ist dieses System vollkommen fehlerfest. In einer alternativen Anwendung können die Kabel 208 und 210 durch ein Paar lokaler Rechnernetze ausgetauscht werden, mit welchen jeder IOP 202 und jedes CE 204 verbunden sind. Tatsächlich können lokale Rechnernetze immer Kabelverbindungen ersetzen.
  • Das System 200 ist dahingehend unabhängig von Betriebssystem und Anwendungssoftware, als dass es keiner Modifikationen am Betriebssystem, oder der Anwendungssoftware bedarf, damit diese laufen. Jedes einzelne Hardwareteil kann ohne eine Betriebsunterbrechung aufgewertet oder repariert werden. Daher kann bei einem sequentiellen Ersetzen eines jeden Hardwareteils, wobei es dem System 200 gestattet ist, nach jeder Entfernung eine Synchronisation durchzuführen, die Hardware in ihrer Gesamtheit ersetzt werden, ohne dass es zu einer Betriebsunterbrechung kommt. Auf ähnliche Weise kann die Software auf dem System 200 mit minimalen Betriebsunterbrechungen aufgewertet werden. (d. h., dass während dem Software-Upgrade die Anwendung für eine akzeptable Zeitperiode von z. B. 2 Sekunden nicht verfügbar sein wird). Vor dem Hintergrund der Verfügbarkeit kann auch Katastrophentoleranz erlangt werden, indem man jedes IOP/CE Paar an separaten Orten platziert und sie über Kommunikationsverbindungen zusammenschließt.
  • Wie in 7 dargestellt, enthält ein gegliedertes, störungsfestes Hochleistungssystem 220 zwei Systeme 200, deren IOPs 202 über IPI-Module durch Kabel 222 miteinander verbunden sind. Das System 220 nutzt eine gegliederte Rechnerumgebungssoftware, um durch das Laufenlassen separater Teile der Anwendung auf jedem der Systeme 200, die Hochleistung zu erreichen. Das System 220 ist störungstolerant und bietet die Fähigkeit sowohl Hardware- als auch Software-Upgrades ohne eine Betriebsunterbrechung durchzuführen.
  • Wie in 8 gezeigt, beinhaltet ein störungstolerantes System 230 drei IOPs (232, 234 und 236) und drei CEs (238, 240 und 242). Über IPI-Module 244 und Kabel 246 ist jeder IOP mit einem IOP-Modul 244 eines jeden der anderen IOPs verbunden. Über IPI-Module 248 und Kabel 250 ist jedes CE mit einem IPI Modul 244 von einem der IOPs verbunden, wobei CE 238 mit den IOPs 232 und 234, CE 240 mit den IOPs 232 und 236 und CE 242 mit den IOPs 234 und 236 verbunden ist. Ebenso wie das System 200, gestattet das System 230 Hardware-Upgrades und Software-Upgrades mit nur minimaler Betriebsunterbrechung.
  • Wie aus einem Vergleich der 7 und 8 hervorgeht, sind die CEs und IOPs der Systeme 200 und 300 identisch konfiguriert. Als eine Folge davon bedarf es bei einer Aufstockung des störungsfesten Systems 200 zu einem störungstoleranten System 230 keines Hardwareaustausches und beschränkt sich auf den einfachen Vorgang des Hinzufügens eines weiteren CE/IOP Paares, des Verbindens der Kabel und der Anpassung der Systemsoftware. Diese Modularität ist ein wichtiges Merkmal der erfindungsgemäßen Paar-Modular-Redundanz Anordnung.
  • Da die Komponenten des Systems 230 dreifach-redundant sind, ist das System 230 eher dazu fähig, die Quelle einer Hardwarestörung zu identifizieren, als dies beim System 10 der Fall ist. Während somit das System 10 einfach eines oder beide der CEs 14 ausschaltet, sobald ein Fehler registriert wird, bietet das System 230 einen höheren Grad an Fehlerdiagnose.
  • Wie in 9 aufgezeigt, führt jedes der IOP (232, 234 und 236) des Systems 230 die Fehlerdiagnose in Übereinstimmung mit einem Verfahren 300 aus. Zuerst prüft jeder IOP (232, 234, 236) die Hauptfehler wie z. B. Leistungsverlust, gebrochene Kabel und nicht funktionstüchtige CEs oder IOPs, wobei bekannte Techniken, wie beispielsweise Leistungsmessung, Kabelmessung und Protocol Timeouts (Schritt 302) verwendet werden. Wenn eine solche Störung auftritt, schaltet jeder IOP das fehlerhafte Gerät und wenn nötig das gesamte System aus.
  • Nach der Prüfung der Hauptfehler, wartet jeder IOP darauf, IPI Pakete (d. h. Quantenunterbrechungen oder I/P Anfragen) von den zwei CEs, mit denen er verbunden ist, zu erhalten (Schritt 304). So wartet IOP 232 beispielsweise darauf, IPI-Pakete von den CEs 238 und 240 zu erhalten. Nach dem Erhalt der IPI-Pakete von den beiden verbundenen CEs, übermittelt jeder IOP die Prüfsummen ("CRCs") dieser IPI-Pakete zu den anderen zwei IOPs und wartet auf den Empfang der CRCs dieser anderen beiden IOPs (Schritt 306).
  • Nach dem Erhalt der CRCs von den anderen beiden IOPs, generiert jeder IOP eine 3×3 Matrix in welcher jede Spalte einem CE, jede Zeile einem IOP und jeder Eintrag einer CRC der CEs, die von den entsprechenden IOP's empfangen wurden entspricht.
  • So generiert IOP 232 beispielsweise die folgende Matrix.
    CE 238 CE 240 CE 242
    IOP 232 CRC CRC X
    IOP 234 CRC X CRC
    IOP 236 X CRC CRC
  • Nach dem Generieren der Matrix summiert IOP 232 die Einträge in jeder Zeile und jeder Spalte der Matrix. Falls die drei Zeilensummen und die drei Spaltensummen jeweils übereinstimmen (Schritt 310), dann gibt es keine Störung und der IOP 232 prüft erneut auf Hauptfehler Schritt 302).
  • Falls aber entweder die drei Zeilensummen oder die drei Spaltensummen voneinander abweichen (Schritt 310), dann vergleicht der IOP 232 die CRC-Einträge in jeder der Matrixspalten. Wenn die zwei CRC Einträge in jeder Matrixspalte übereinstimmen (Schritt 312), dann diagnostiziert der IOP 232, dass eine CE-Störung aufgetreten ist und schaltet das CE korrespondierend zu der Spalte, in welcher die Summe nicht gleich den Summen der anderen Spalten ist, ab (Schritt 314).
  • Wenn die CRC Einträge in einer oder mehreren der Matrixspalten nicht übereinstimmen (Schritt 312), dann bestimmt der IOP 232, wie viele der Spalten abweichende Einträge enthalten. Falls die Matrix nur eine Spalte mit nicht übereinstimmenden Einträgen enthält (Schritt 315), dann diagnostiziert der IOP 232, dass die Leiterbahn zwischen dem IOP, entsprechend der Matrixzeilensumme, die von den übrigen Matrixzeilensummen abweicht und dem CE entsprechend der Matrixspalte, die nicht übereinstimmende Einträge hat, gestört ist und deaktiviert diese Leiterbahn (Schritt 316). Für Diagnosezwecke umfasst die Leiterbahn das IPI-Modul 244 im IOP, das IPI-Modul 248 im CE und das Kabel 250.
  • Falls die Matrix mehr als eine Spalte mit nicht übereinstimmenden Einträgen enthält (Schritt 314), bestätigt der IOP 232, dass eine Matrixzeilensumme ungleich zu den übrigen Matrixzeilensummen ist, diagnostiziert eine IOP-Störung und schaltet den der Matrixzeilensumme, die von den übrigen abweicht, entsprechenden IOP ab (Schritt 318).
  • Sofern der IOP nach dem Diagnostizieren und dem Verbuchen entweder einer CE-Störung (Schritt 314), einer Leiterbahnstörung (Schritt 316) oder einer IOP-Störung (Schritt 318) feststellt, dass das System 300 noch immer genügend störungsfreie Hardware enthält, um arbeitsfähig zu bleiben, prüft der IOP 232 nochmals auf Hauptfehler (Schritt 302). Da das System 230 dreifach redundant ist, kann das System 230 weiterarbeiten, selbst wenn einige Komponenten ausgefallen sind. Um beispielweise in einem Verfügbarkeitsmodus weiter operieren zu können, benötigt das System 230 lediglich ein einzelnes funktionierendes CE, einen einzelnen funktionierenden IOP und eine funktionstüchtige Leiterbahn zwischen beiden.
  • Mittels dem Verfahren 300, kann jeder IOP (232, 234, 236) jede einzelne Störung in einem vollständig arbeitsfähigem System 230 oder in einem System 230, in welchem ein Element (d. h. ein CE, ein IOP oder eine Leiterbahn) zuvor ausgeschaltet wurde, korrekt diagnostizieren. In einem System 230, in welchen ein Element ausgeschaltet wurde, verbucht jeder IOP die CRCs, die wegen dem ausgeschalteten Element nicht empfangen wurden, mittels Nutzung von Werten, die im Vergleich zu tatsächlich empfangenen CRCs als korrekt erscheinen.
  • Das Verfahren 300 ist nicht abhängig von einer besonderen Anordnung oder Schaltverbindung der CEs oder IOPs. Um entsprechend zu funktionieren, erfordert das Verfahren 300 lediglich, dass der Output eines jeden CEs direkt von mindestens zwei IOPs überwacht wird. Daher kann das Verfahren 300 bei einem System angewendet werden, das jede Art von Schaltverbindungsmechanismen nutzt und erfordert keine Punkt zu Punkt Verbindung zwischen den CEs und den IOPs. Beispielsweise könnten die CEs und die IOPs auch mit mindestens zwei lokalen Rechnernetzen verbunden sein. Bei einer alternativen Anwendungen können, statt dem Summieren der CRC-Werte in den Zeilen und Spalten der Matrix, diese Werte auch einfach verglichen werden, und diejenigen Zeilen oder Spalten, in welchen die Einträge nicht übereinstimmen, können mit einer Übereinstimm/Abweich-Kennzeichnung versehen werden.
  • Eine vereinfachte Version des Verfahrens 300 kann in einem System 200 eingesetzt werden. Bei diesem Verfahren generiert jeder IOP 202 des Systems 200 eine 2×2 Matrix in welcher jede Spalte mit einem CE 204 und jede Zeile mit einem IOP 202 korrespondiert.
    CE 204 CE 204
    IOP 202 CRC CRC
    IOP 202 CRC CRC
  • Nach dem Generieren der Matrix fügt jeder IOP 202 eine Abweich-Kennzeichnung in jede Zeile oder Spalte, in welcher die zwei Einträge abweichen.
  • Sofern es keine solchen Abweich-Kennzeichnungen gibt, arbeitet das System 200 korrekt.
  • Wenn keine Zeile und beide Spalten Abweich-Kennzeichnungen aufweisen, dann wurde ein IOP 202 gestört. In Abhängigkeit vom Operationsmodus des Systems 200 schaltet ein IOP 202 dann den anderen IOP 202 oder das ganze System 200 ab. Der abzuschaltende IOP 202 wird basierend auf vom Nutzer bereitgestellten Parametern ausgewählt, ähnlich wie in den zwei Verfügbarkeitsmodi, die in System 10 verwendet werden.
  • Wenn beide Zeilen und keine Spalte Abweich-Kennzeichnungen aufweisen, dann wurde ein CE 204 gestört. In diesem Fall reagieren die IOPs 202, indem sie ein CE 204 abschalten, falls das System 200 im Verfügbarkeitsmodus arbeitet, oder fahren das System 200 herunter, falls das System 200 im Integritätsmodus arbeitet. Wenn beide Zeilen und eine Spalte Abweich-Kennzeichnungen aufweisen, dann wurde eine der Leiterbahnen zwischen den IOPs 201 und dem CE 204 entsprechend der abweichenden Spalte gestört. Je nach Operationsmodus des Systems 200 schalten die IOPs 202 entweder das CE 204 mit der fehlerhaften Leiterbahn ab oder fahren das ganze System 200 herunter. Wenn beide Zeilen und beide Spalten Abweich-Kennzeichnungen aufweisen, dann exisiert eine multiple Störung und die IOPs 202 fahren das System 200 herunter.
  • Wenn eine Zeile und beide Spalten Abweich-Kennzeichnungen aufweisen, dann wurde der der Abweichung entsprechende IOP 202 gestört. In Abhängigkeit vom jeweiligen Operationsmodus des Systems 200 schalten der andere IOP 202 entweder den fehlerhaften IOP 202 ab oder fährt das System 200 herunter. Wenn eine Zeile und eine Spalte Abweich-Kennzeichnungen aufweisen, dann wurde die Leiterbahn zwischen dem der abweichenden Zeile entsprechenden IOP 202 und dem der abweichenden Spalte entsprechenden CE 204 gestört. In Abhängigkeit vom Operationsmodus des Systems 200 verbuchen die IOPs 202 die fehlerhafte Leiterbahn entweder in zukünftigen Prozessen, oder fahren das System 200 herunter.
  • Wie in 10 dargestellt, umfasst eine Ausführungsform eines desastertoleranten Systems 260 zwei fehlertolerante Systeme 230, die an voneinander entfernten Orten angeordnet sind und über Kommunikationsverbindungen 262, wie z. B. Ethernet oder Glasfaser, zusammengeschlossen sind und miteinander in einem Zwischen-Zeit-Blockierschritt operieren. Um einen Zwischen-Zeit- Blockierschritt zu erhalten, werden alle IPI-Pakete zwischen den störungstoleranten Systemen 230 übertragen. Wie das System 220, gestattet auch das System 260 Hard- und Software-Upgrades ohne eine Betriebsunter brechung.
  • Wie gezeigt, erlaubt die gepaarte Modular-Redundanz Architektur die Stufen der Störungsfestigkeit und Störungstoleranz durch die Verwendung von CEs, die asynchron in Echtzeit operieren und von IOPs kontrolliert werden, damit sie synchron in der Zwischen-Zeit operieren, zu variieren. Diese Architektur ist einfach und kostengünstig und kann mit minimalem Aufwand erweitert oder aufgerüstet werden.

Claims (11)

  1. Computersystem (10), umfassend: einen Controller (12), ein mit dem Controller verbundenes erstes Rechenelement (14a), ein mit dem Controller verbundenes zweites Rechenelement (14b), wobei das erste Rechenelement jeden Befehl seiner Gruppe von Befehlen in einer Anzahl von Zyklen ausführt, die die gleiche ist wie die Anzahl von Zyklen, die das zweite Rechenelement für die Ausführung dieses Befehls benötigt, gekennzeichnet durch Mittel (48) zum Abfangen von E/A-Operation durch das erste und das zweite Rechenelement und Mittel zum Übertragen der abgefangenen E/A-Operationen an den Controller; wobei der Controller Mittel umfasst zum Durchführen der E/A-Operationen, zum Liefern der Ergebnisse, sofern vorhanden, der E/A-Operationen an zumindest eines der Rechenelemente und zum Synchronisieren der Rechenelemente miteinander nach jeder E/A-Operation.
  2. Computersystem nach Anspruch 1, wobei der Controller und das erste und das zweite Rechenelement jeweils ein Motherboard nach Industrienorm umfassen.
  3. Computersystem nach Anspruch 1 oder 2, ferner umfassend einen zweiten Controller, der mit dem ersten Controller und mit dem ersten und dem zweiten Rechenelement verbunden ist.
  4. Computersystem nach Anspruch 3, wobei sich der erste Controller und das erste Rechenelement an einem ersten Ort und der zweite Controller und das zweite Rechenelement an einem zweiten Ort befinden, wobei das System ferner einen Kommunikations-Link umfasst, der den ersten Controller mit dem zweiten Controller, den ersten Controller mit dem zweiten Rechenelement und den zweiten Controller mit dem ersten Rechenelement verbindet.
  5. Computersystem nach Anspruch 3 oder Anspruch 4, ferner umfassend: einen dritten Controller; einen vierten Controller, der mit dem dritten Controller verbunden ist; ein drittes Rechenelement, das mit dem dritten Controller und dem vierten Controller verbunden ist; ein viertes Rechenelement, das mit dem dritten Controller und dem vierten Controller verbunden ist; Mittel zum Verbinden des dritten und des vierten Controllers mit dem ersten und dem zweiten Controller; und Mittel zum Verteilen der Rechenaufgaben zwischen den Rechenelementen, wobei das erste und das zweite Rechenelement eine erste Gruppe von Rechenaufgaben und das dritte und das vierte Rechenelement eine zweite Gruppe von Rechenaufgaben ausführen; wobei das dritte und das vierte Rechenelement jeden Befehl ihrer Gruppe von Befehlen in einer Anzahl von Zyklen ausführen, die gleich ist mit der Anzahl von Zyklen, die das erste und das zweite Rechenelement zum Ausführen dieses Befehls benötigen.
  6. Computersystem nach einem der Ansprüche 3 bis 5, wobei der erste Controller und das erste Rechenelement von dem zweiten Controller und dem zweiten Rechenelement entfernt angeordnet sind, um für eine Desastertoleranz zu sorgen.
  7. Computersystem nach einem der Ansprüche 1 bis 6, wobei das erste und das zweite Rechenelement jeweils Mittel zum Generieren eines Quantum-Interrupt umfassen.
  8. Computersystem nach Anspruch 1, ferner umfassend: einen zweiten Controller, der mit dem ersten Controller verbunden ist; einen dritten Controller, der mit dem ersten und dem zweiten Controller verbunden ist; wobei das erste Rechenelement ferner mit dem zweiten Controller verbunden ist, wobei das zweite Rechenelement ferner mit dem dritten Controller verbunden ist und wobei ein drittes Rechenelement mit dem zweiten und dem dritten Controller verbunden ist.
  9. Computersystem nach Anspruch 8, wobei der erste Controller und das erste Rechenelement von den anderen Controllern und Rechenelementen entfernt angeordnet sind, um für eine Desastertoleranz zu sorgen.
  10. Computersystem nach Anspruch 8 oder Anspruch 9, ferner umfassend: Mittel zum Abfangen von E/A-Operationen durch das erste Rechenelement; Mittel zum Übertragen der abgefangenen E/A von dem ersten Rechenelement zu dem ersten und dem zweiten Controller; Mittel zum Abfangen von E/A-Operationen durch das zweite Rechenelement; Mittel zum Übertragen der abgefangenen E/A von dem zweiten Rechenelement zu dem zweiten und dem dritten Controller; Mittel zum Abfangen von E/A-Operationen durch das dritte Rechenelement; und Mittel zum Übertragen der abgefangenen E/A von dem dritten Rechenelement zu dem ersten und dem dritten Controller.
  11. Computersystem nach einem der Ansprüche 8 bis 10, ferner umfassend: einen vierten Controller; einen fünften Controller, der mit dem vierten Controller verbunden ist; einen sechsten Controller, der mit dem vierten und dem fünften Controller verbunden ist; ein viertes Rechenelement, das mit dem vierten und dem fünften Controller verbunden ist; ein fünftes Rechenelement, das mit dem fünften und dem sechsten Controller verbunden ist; ein sechstes Rechenelement, das mit dem vierten und dem sechsten Controller verbunden ist; und einen Kommunikations-Link zum Verbinden des ersten, des zweiten und des dritten Controllers mit dem vierten, dem fünften und dem sechsten Controller, wobei sich der erste, der zweite und der dritte Controller und das erste, das zweite und das dritte Rechenelement an einem ersten Ort und der vierte, der fünfte und der sechste Controller und das vierte, das fünfte und das sechste Rechenelement an einem zweiten Ort befinden.
DE69435090T 1993-12-01 1994-11-15 Rechnersystem mit Steuereinheiten und Rechnerelementen Expired - Fee Related DE69435090T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15978393A 1993-12-01 1993-12-01
US159783 1993-12-01

Publications (2)

Publication Number Publication Date
DE69435090D1 DE69435090D1 (de) 2008-05-29
DE69435090T2 true DE69435090T2 (de) 2009-06-10

Family

ID=22574001

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69435090T Expired - Fee Related DE69435090T2 (de) 1993-12-01 1994-11-15 Rechnersystem mit Steuereinheiten und Rechnerelementen
DE69435165T Expired - Lifetime DE69435165D1 (de) 1993-12-01 1994-11-15 Fehlerbetriebssichere/Fehlertolerante Computerbetriebsmethode
DE69424565T Expired - Lifetime DE69424565T2 (de) 1993-12-01 1994-11-15 Fehler-betriebssichere/fehler tolerante computerbetriebsmethode

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE69435165T Expired - Lifetime DE69435165D1 (de) 1993-12-01 1994-11-15 Fehlerbetriebssichere/Fehlertolerante Computerbetriebsmethode
DE69424565T Expired - Lifetime DE69424565T2 (de) 1993-12-01 1994-11-15 Fehler-betriebssichere/fehler tolerante computerbetriebsmethode

Country Status (6)

Country Link
US (4) US5600784A (de)
EP (4) EP0974912B1 (de)
AU (4) AU680974B2 (de)
CA (1) CA2177850A1 (de)
DE (3) DE69435090T2 (de)
WO (1) WO1995015529A1 (de)

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751955A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Method of synchronizing a pair of central processor units for duplex, lock-step operation by copying data into a corresponding locations of another memory
US5978565A (en) * 1993-07-20 1999-11-02 Vinca Corporation Method for rapid recovery from a network file server failure including method for operating co-standby servers
EP0974912B1 (de) * 1993-12-01 2008-11-05 Marathon Technologies Corporation Fehlerbetriebssichere/Fehlertolerante Computerbetriebsmethode
SE506739C2 (sv) * 1995-09-29 1998-02-09 Ericsson Telefon Ab L M Drift och underhåll av klockdistributionsnät med redundans
US5819020A (en) * 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
FR2748136B1 (fr) * 1996-04-30 1998-07-31 Sextant Avionique Module electronique avec architecture redondante pour controle d'integrite du fonctionnement
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
US5790397A (en) 1996-09-17 1998-08-04 Marathon Technologies Corporation Fault resilient/fault tolerant computing
TW355762B (en) * 1996-12-26 1999-04-11 Toshiba Co Ltd Checkpoint rollback I/O control device and I/O control method
US5892897A (en) * 1997-02-05 1999-04-06 Motorola, Inc. Method and apparatus for microprocessor debugging
US6161202A (en) * 1997-02-18 2000-12-12 Ee-Signals Gmbh & Co. Kg Method for the monitoring of integrated circuits
US7389312B2 (en) * 1997-04-28 2008-06-17 Emc Corporation Mirroring network data to establish virtual storage area network
US5896523A (en) * 1997-06-04 1999-04-20 Marathon Technologies Corporation Loosely-coupled, synchronized execution
US5983371A (en) * 1997-07-11 1999-11-09 Marathon Technologies Corporation Active failure detection
FR2767935B1 (fr) * 1997-09-04 1999-11-12 Bull Sa Procede pour synchroniser un systeme informatique et systeme informatique ainsi synchronise
US6289022B1 (en) * 1997-10-21 2001-09-11 The Foxboro Company Methods and systems for fault-tolerant data transmission
DE69804489T2 (de) * 1997-11-14 2002-11-14 Marathon Techn Corp Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen
US6185662B1 (en) 1997-12-22 2001-02-06 Nortel Networks Corporation High availability asynchronous computer system
US6374364B1 (en) 1998-01-20 2002-04-16 Honeywell International, Inc. Fault tolerant computing system using instruction counting
DE19815263C2 (de) * 1998-04-04 2002-03-28 Astrium Gmbh Vorrichtung zur fehlertoleranten Ausführung von Programmen
US6260159B1 (en) * 1998-06-15 2001-07-10 Sun Microsystems, Inc. Tracking memory page modification in a bridge for a multi-processor system
US6141718A (en) * 1998-06-15 2000-10-31 Sun Microsystems, Inc. Processor bridge with dissimilar data registers which is operable to disregard data differences for dissimilar data direct memory accesses
US6247143B1 (en) 1998-06-30 2001-06-12 Sun Microsystems, Inc. I/O handling for a multiprocessor computer system
US20020153283A1 (en) * 1998-12-28 2002-10-24 Arthur W Chester Gasoline sulfur reduction in fluid catalytic cracking
US6974787B2 (en) 1998-08-31 2005-12-13 Exxonmobil Corporation Gasoline sulfur reduction in fluid catalytic cracking
US6321279B1 (en) * 1998-09-14 2001-11-20 Compaq Computer Corporation System for implementing intelligent I/O processing in a multi-processor system by redirecting I/O messages to a target central processor selected from the multi-processor system
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
EP1157324A4 (de) * 1998-12-18 2009-06-17 Triconex Corp Verfahren und gerät für verarbeitungssteuerung, die eine vielzahl-redundantes-prozesssteuerungssystem verwenden
US7803267B2 (en) * 1998-12-28 2010-09-28 W. R. Grace & Co.-Conn. Gasoline sulfur reduction in fluid catalytic cracking
US6430639B1 (en) * 1999-06-23 2002-08-06 Advanced Micro Devices, Inc. Minimizing use of bus command code points to request the start and end of a lock
US6324692B1 (en) * 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
US6735716B1 (en) * 1999-09-27 2004-05-11 Cisco Technology, Inc. Computerized diagnostics and failure recovery
FR2803057B1 (fr) * 1999-12-22 2002-11-29 Centre Nat Etd Spatiales Systeme informatique tolerant aux erreurs transitoires et procede de gestion dans un tel systeme
US6735715B1 (en) 2000-04-13 2004-05-11 Stratus Technologies Bermuda Ltd. System and method for operating a SCSI bus with redundant SCSI adaptors
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
AU2001293360A1 (en) * 2000-04-13 2001-10-30 Stratus Technologies International, S.A.R.L. Method and system for upgrading fault-tolerant systems
US6633996B1 (en) 2000-04-13 2003-10-14 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus architecture
US6708283B1 (en) 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US6691257B1 (en) 2000-04-13 2004-02-10 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus protocol and method for using the same
US6687851B1 (en) 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US6691225B1 (en) 2000-04-14 2004-02-10 Stratus Technologies Bermuda Ltd. Method and apparatus for deterministically booting a computer system having redundant components
US6813721B1 (en) 2000-09-20 2004-11-02 Stratus Computer Systems, S.A.R.L. Methods and apparatus for generating high-frequency clocks deterministically from a low-frequency system reference clock
US6718474B1 (en) 2000-09-21 2004-04-06 Stratus Technologies Bermuda Ltd. Methods and apparatus for clock management based on environmental conditions
ATE371328T1 (de) * 2000-10-30 2007-09-15 Siemens Ag Hochgeschwindigkeitsverbindung für eingebettete systeme in einem rechnernetzwerk
US7213265B2 (en) * 2000-11-15 2007-05-01 Lockheed Martin Corporation Real time active network compartmentalization
US7225467B2 (en) 2000-11-15 2007-05-29 Lockheed Martin Corporation Active intrusion resistant environment of layered object and compartment keys (airelock)
US6801876B2 (en) * 2000-12-08 2004-10-05 Caterpillar Inc Method and apparatus of managing time for a processing system
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
EP1231537A1 (de) * 2001-02-09 2002-08-14 Siemens Aktiengesellschaft Automatische Inbetriebnahme eines Clustersystems nach einem heilbaren Fehler
US6766479B2 (en) 2001-02-28 2004-07-20 Stratus Technologies Bermuda, Ltd. Apparatus and methods for identifying bus protocol violations
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US6928583B2 (en) * 2001-04-11 2005-08-09 Stratus Technologies Bermuda Ltd. Apparatus and method for two computing elements in a fault-tolerant server to execute instructions in lockstep
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
JP2004046455A (ja) * 2002-07-10 2004-02-12 Nec Corp 情報処理装置
JP2004046599A (ja) 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
JP3982353B2 (ja) * 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
EP1398699A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
US7080094B2 (en) * 2002-10-29 2006-07-18 Lockheed Martin Corporation Hardware accelerated validating parser
US20040083466A1 (en) * 2002-10-29 2004-04-29 Dapp Michael C. Hardware parser accelerator
US20070061884A1 (en) * 2002-10-29 2007-03-15 Dapp Michael C Intrusion detection accelerator
US7146643B2 (en) * 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
US7507686B2 (en) * 2002-12-03 2009-03-24 W. R. Grace & Co. - Conn. Gasoline sulfur reduction in fluid catalytic cracking
GB2396446B (en) * 2002-12-20 2005-11-16 Picochip Designs Ltd Array synchronization
US7320084B2 (en) 2003-01-13 2008-01-15 Sierra Logic Management of error conditions in high-availability mass-storage-device shelves by storage-shelf routers
AU2003277247A1 (en) * 2003-02-28 2004-09-28 Lockheed Martin Corporation Hardware accelerator state table compiler
US7467326B2 (en) * 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
US20050010811A1 (en) * 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US20050039074A1 (en) * 2003-07-09 2005-02-17 Tremblay Glenn A. Fault resilient/fault tolerant computing
US7146530B2 (en) * 2003-07-18 2006-12-05 Hewlett-Packard Development Company, L.P. Targeted fault tolerance by special CPU instructions
DE102004005680A1 (de) * 2004-02-05 2005-08-25 Bayerische Motoren Werke Ag Vorrichtung und Verfahren zur Ansteuerung von Steuergeräten in einem Bordnetz eines Kraftfahrzeuges
US7321985B2 (en) * 2004-02-26 2008-01-22 International Business Machines Corporation Method for achieving higher availability of computer PCI adapters
DE102004011933B4 (de) * 2004-03-11 2008-04-10 Dr.Ing.H.C. F. Porsche Ag Stromabnahmeeinrichtung für ein spurgeführtes Spielfahrzeug
US8799706B2 (en) 2004-03-30 2014-08-05 Hewlett-Packard Development Company, L.P. Method and system of exchanging information between processors
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US7426656B2 (en) * 2004-03-30 2008-09-16 Hewlett-Packard Development Company, L.P. Method and system executing user programs on non-deterministic processors
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
JP2006178616A (ja) * 2004-12-21 2006-07-06 Nec Corp フォールトトレラントシステム、これで用いる制御装置、動作方法、及び動作プログラム
JP4182948B2 (ja) * 2004-12-21 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
JP2006178636A (ja) * 2004-12-21 2006-07-06 Nec Corp フォールトトレラントコンピュータ、およびその制御方法
US7496787B2 (en) 2004-12-27 2009-02-24 Stratus Technologies Bermuda Ltd. Systems and methods for checkpointing
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
JP3897046B2 (ja) * 2005-01-28 2007-03-22 横河電機株式会社 情報処理装置および情報処理方法
US7424641B2 (en) * 2005-04-06 2008-09-09 Delphi Technologies, Inc. Control system and method for validating operation of the control 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
US20070006166A1 (en) * 2005-06-20 2007-01-04 Seagate Technology Llc Code coverage for an embedded processor system
US20070038891A1 (en) * 2005-08-12 2007-02-15 Stratus Technologies Bermuda Ltd. Hardware checkpointing system
US7669073B2 (en) * 2005-08-19 2010-02-23 Stratus Technologies Bermuda Ltd. Systems and methods for split mode operation of fault-tolerant computer systems
JP4816911B2 (ja) * 2006-02-07 2011-11-16 日本電気株式会社 メモリの同期化方法及びリフレッシュ制御回路
US8032889B2 (en) 2006-04-05 2011-10-04 Maxwell Technologies, Inc. Methods and apparatus for managing and controlling power consumption and heat generation in computer systems
US7549085B2 (en) * 2006-04-28 2009-06-16 Hewlett-Packard Development Company, L.P. Method and apparatus to insert special instruction
DE102006032726B4 (de) * 2006-07-14 2008-05-15 Lucas Automotive Gmbh Verfahren zum Synchronisieren von Komponenten eines Kraftfahrzeugbremssystems und elektronisches Bremssteuersystem
FR2912526B1 (fr) * 2007-02-13 2009-04-17 Thales Sa Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
US20090076628A1 (en) * 2007-09-18 2009-03-19 David Mark Smith Methods and apparatus to upgrade and provide control redundancy in process plants
US8689224B2 (en) * 2007-09-26 2014-04-01 The Boeing Company Methods and systems for preserving certified software through virtualization
JP4468426B2 (ja) * 2007-09-26 2010-05-26 株式会社東芝 高可用システム及び実行状態制御方法
GB2454865B (en) * 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
US8255732B2 (en) * 2008-05-28 2012-08-28 The United States Of America, As Represented By The Administrator Of The National Aeronautics And Space Administration Self-stabilizing byzantine-fault-tolerant clock synchronization system and method
GB2466661B (en) * 2009-01-05 2014-11-26 Intel Corp Rake receiver
DE102009000045A1 (de) * 2009-01-07 2010-07-08 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Steuergerätes
US20100229029A1 (en) * 2009-03-06 2010-09-09 Frazier Ii Robert Claude Independent and dynamic checkpointing system and method
JP5278530B2 (ja) * 2009-03-09 2013-09-04 富士通株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
US20110099421A1 (en) * 2009-09-30 2011-04-28 Alessandro Geist Radiation-hardened hybrid processor
US20110078498A1 (en) * 2009-09-30 2011-03-31 United States Of America As Represented By The Administrator Of The National Aeronautics And Spac Radiation-hardened hybrid processor
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
EP2633408B1 (de) 2010-10-28 2018-08-22 Data Device Corporation System, verfahren und vorrichtung zur fehlerkorrektur in mehrprozessorsystemen
US8443230B1 (en) * 2010-12-15 2013-05-14 Xilinx, Inc. Methods and systems with transaction-level lockstep
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
US8966478B2 (en) 2011-06-28 2015-02-24 The Boeing Company Methods and systems for executing software applications using hardware abstraction
US8856590B2 (en) * 2012-01-07 2014-10-07 Compunetix, Inc. Reliable compute engine, method and apparatus
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
EP3090345B1 (de) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Verfahren zur prüfpunktverzögerung durch inspektion von netzwerkdatenpaketen
WO2015102873A2 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
WO2016077570A1 (en) 2014-11-13 2016-05-19 Virtual Software Systems, Inc. System for cross-host, multi-thread session alignment
WO2016093795A1 (en) * 2014-12-09 2016-06-16 General Electric Company Redundant ethernet-based control apparatus and method
US10025344B2 (en) 2015-04-21 2018-07-17 The United States Of America As Represented By The Administrator Of Nasa Self-stabilizing distributed symmetric-fault tolerant synchronization protocol
WO2019173075A1 (en) * 2018-03-06 2019-09-12 DinoplusAI Holdings Limited Mission-critical ai processor with multi-layer fault tolerance support
US10642826B1 (en) 2018-08-30 2020-05-05 Gravic, Inc. Mixed-mode method for combining active/active and validation architectures utilizing a check integrity module
US11899547B2 (en) 2021-11-30 2024-02-13 Mellanox Technologies, Ltd. Transaction based fault tolerant computing system

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3864670A (en) * 1970-09-30 1975-02-04 Yokogawa Electric Works Ltd Dual computer system with signal exchange system
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4358823A (en) * 1977-03-25 1982-11-09 Trw, Inc. Double redundant processor
US4270168A (en) * 1978-08-31 1981-05-26 United Technologies Corporation Selective disablement in fail-operational, fail-safe multi-computer control system
DE2939935A1 (de) * 1979-09-28 1981-04-09 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt Sichere datenverarbeitungseinrichtung
US4356546A (en) * 1980-02-05 1982-10-26 The Bendix Corporation Fault-tolerant multi-computer system
US4939643A (en) * 1981-10-01 1990-07-03 Stratus Computer, Inc. Fault tolerant digital data processor with improved bus protocol
US4449182A (en) * 1981-10-05 1984-05-15 Digital Equipment Corporation Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems
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
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
US4622667A (en) * 1984-11-27 1986-11-11 Sperry Corporation Digital fail operational automatic flight control system utilizing redundant dissimilar data processing
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
AU606854B2 (en) * 1986-01-10 1991-02-21 Wyse Technology, Inc. Virtual peripheral controller
US5062042A (en) * 1986-04-28 1991-10-29 Xerox Corporation System for managing data which is accessible by file address or disk address via a disk track map
US4920481A (en) * 1986-04-28 1990-04-24 Xerox Corporation Emulation with display update trapping
US4812968A (en) * 1986-11-12 1989-03-14 International Business Machines Corp. Method for controlling processor access to input/output devices
US4807228A (en) * 1987-03-18 1989-02-21 American Telephone And Telegraph Company, At&T Bell Laboratories Method of spare capacity use for fault detection in a multiprocessor system
US4805107A (en) * 1987-04-15 1989-02-14 Allied-Signal Inc. Task scheduler for a fault tolerant multiple node processing system
US4910663A (en) * 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
US4907228A (en) * 1987-09-04 1990-03-06 Digital Equipment Corporation Dual-rail processor with error checking at single rail interfaces
CA1320276C (en) * 1987-09-04 1993-07-13 William F. Bruckert Dual rail processors with error checking on i/o reads
EP0306211A3 (de) * 1987-09-04 1990-09-26 Digital Equipment Corporation Synchronisiertes Doppelrechnersystem
EP0306244B1 (de) * 1987-09-04 1995-06-21 Digital Equipment Corporation Fehlertolerantes Rechnersystem mit Fehler-Eingrenzung
US4916704A (en) * 1987-09-04 1990-04-10 Digital Equipment Corporation Interface of non-fault tolerant components to fault tolerant system
CA2003338A1 (en) * 1987-11-09 1990-06-09 Richard W. Cutts, Jr. Synchronization of fault-tolerant computer system having multiple processors
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
DE3803525C2 (de) * 1988-02-05 1993-12-02 Licentia Gmbh Vorrichtung zum Betrieb von absoluten Echtzeituhren in einem eine Zentraluhr und Teilnehmer enthaltenden Prozeßsteuersystem
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
US5065310A (en) * 1989-05-10 1991-11-12 International Business Machines Corporation Reducing cache-reload transient at a context swap
US5048022A (en) * 1989-08-01 1991-09-10 Digital Equipment Corporation Memory device with transfer of ECC signals on time division multiplexed bidirectional lines
US5091847A (en) * 1989-10-03 1992-02-25 Grumman Aerospace Corporation Fault tolerant interface station
US5327553A (en) * 1989-12-22 1994-07-05 Tandem Computers Incorporated Fault-tolerant computer system with /CONFIG filesystem
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5161156A (en) * 1990-02-02 1992-11-03 International Business Machines Corporation Multiprocessing packet switching connection system having provision for error correction and recovery
US5095423A (en) * 1990-03-27 1992-03-10 Sun Microsystems, Inc. Locking mechanism for the prevention of race conditions
US5155845A (en) * 1990-06-15 1992-10-13 Storage Technology Corporation Data storage system for providing redundant copies of data on different disk drives
US5261092A (en) * 1990-09-26 1993-11-09 Honeywell Inc. Synchronizing slave processors through eavesdrop by one on periodic sync-verify messages directed to another followed by comparison of individual status
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
EP0496927B1 (de) * 1991-02-01 1997-01-08 Siemens Aktiengesellschaft Verfahren für den fehlerbedingten Neustart eines Multiprozessorrechners eines Fernmeldevermittlungssystems
US5339404A (en) * 1991-05-28 1994-08-16 International Business Machines Corporation Asynchronous TMR processing system
US5222215A (en) * 1991-08-29 1993-06-22 International Business Machines Corporation Cpu expansive gradation of i/o interruption subclass recognition
US5251312A (en) * 1991-12-30 1993-10-05 Sun Microsystems, Inc. Method and apparatus for the prevention of race conditions during dynamic chaining operations
US5367639A (en) * 1991-12-30 1994-11-22 Sun Microsystems, Inc. Method and apparatus for dynamic chaining of DMA operations without incurring race conditions
US5448723A (en) * 1993-10-15 1995-09-05 Tandem Computers Incorporated Method and apparatus for fault tolerant connection of a computing system to local area networks
EP0974912B1 (de) * 1993-12-01 2008-11-05 Marathon Technologies Corporation Fehlerbetriebssichere/Fehlertolerante Computerbetriebsmethode

Also Published As

Publication number Publication date
AU1182095A (en) 1995-06-19
AU711435B2 (en) 1999-10-14
US5956474A (en) 1999-09-21
AU4286497A (en) 1998-01-15
AU4286597A (en) 1998-01-15
EP0731945A4 (de) 1997-02-12
EP0974912B1 (de) 2008-11-05
US6038685A (en) 2000-03-14
EP0974912A2 (de) 2000-01-26
JP3679412B2 (ja) 2005-08-03
EP0731945A1 (de) 1996-09-18
EP0986008A2 (de) 2000-03-15
AU680974B2 (en) 1997-08-14
EP0986008B1 (de) 2008-04-16
US5600784A (en) 1997-02-04
EP0986008A3 (de) 2000-07-19
WO1995015529A1 (en) 1995-06-08
DE69424565T2 (de) 2001-01-18
DE69435090D1 (de) 2008-05-29
CA2177850A1 (en) 1995-06-08
DE69435165D1 (de) 2008-12-18
AU711419B2 (en) 1999-10-14
EP0986007A2 (de) 2000-03-15
DE69424565D1 (de) 2000-06-21
EP0731945B1 (de) 2000-05-17
AU711456B2 (en) 1999-10-14
EP0974912A3 (de) 2000-07-19
EP0986007A3 (de) 2001-11-07
JPH09509270A (ja) 1997-09-16
US5615403A (en) 1997-03-25
AU4286697A (en) 1998-01-15

Similar Documents

Publication Publication Date Title
DE69435090T2 (de) Rechnersystem mit Steuereinheiten und Rechnerelementen
DE69930846T2 (de) Mehrkonfiguration-rückwand
DE69907709T2 (de) Prozessüberwachung in einem rechnersystem
DE60214234T2 (de) Verfahren und apparate zum implementieren einer glasfaservermittlungseinheit mit hoher verfügbarkeit
DE60301702T2 (de) Fehlertolerantes Computersystem, Verfahren zur Resynchronisation desselben und Programm zur Resynchronisation desselben
EP0306244B1 (de) Fehlertolerantes Rechnersystem mit Fehler-Eingrenzung
DE69817696T2 (de) Warmaustausch von gespiegeltem Nachschreib-Cachespeicher
DE602004005344T2 (de) Verfahren, system und programm zur handhabung eines failover zu einem fernspeicherort
US4941087A (en) System for bumpless changeover between active units and backup units by establishing rollback points and logging write and read operations
US5005174A (en) Dual zone, fault tolerant computer system with error checking in I/O writes
DE60016371T2 (de) Vorrichtung und verfahren um die übereinstimmung der daten in einer gruppe von einspiegelungseinrichtungen gespeichert zu behalten
DE69913553T2 (de) Konfigurierung von systemeinheiten
DE102005014488A1 (de) Verfahren und System zum Bedienen asynchroner Unterbrechungen bei mehreren Prozessoren, die ein Benutzerprogramm ausführen
DE60004365T2 (de) System und verfahren zur überwachung von einem verteilten fehlertoleranten rechnersystem
Kim Highly available systems for database applications
DE69911199T2 (de) Bussteuerung mit mehreren systemwirtsrechnern
DE10255111A1 (de) System und Verfahren zum Laden von Firmware mit hoher Verfügbarkeit
DE10231938A1 (de) Computersystem mit mehreren Sicherungs-Verwaltungsprozessoren zur Handhabung eines Ausfalls eines eingebetteten Prozessors
JPH01154240A (ja) 単一レールインターフェイスにエラーチェック機能を有する二重レールプロセッサ
DE3727850A1 (de) Fehler-pruefsystem
EP0286856B1 (de) Fehlertolerante Rechneranordnung
EP0543821B1 (de) Einrichtung zur funktionsüberwachung externer synchronisations-baugruppen in einem mehrrechnersystem
DE60303468T2 (de) Fehlertolerante Vorrichtung zur Informationsverarbeitung
EP1537482B1 (de) Verfahren und schaltungsanordnung zur synchronisation synchron oder asynchron getakteter verarbeitungseinheiten
JP3301992B2 (ja) 電源故障対策を備えたコンピュータシステム及びその動作方法

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee