DE69027491T2 - Verfahren zur Softwarefehlerbehandlung - Google Patents
Verfahren zur SoftwarefehlerbehandlungInfo
- Publication number
- DE69027491T2 DE69027491T2 DE69027491T DE69027491T DE69027491T2 DE 69027491 T2 DE69027491 T2 DE 69027491T2 DE 69027491 T DE69027491 T DE 69027491T DE 69027491 T DE69027491 T DE 69027491T DE 69027491 T2 DE69027491 T2 DE 69027491T2
- Authority
- DE
- Germany
- Prior art keywords
- error
- module
- data processing
- memory
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims description 78
- 238000012545 processing Methods 0.000 claims abstract description 188
- 230000015654 memory Effects 0.000 claims description 444
- 230000000903 blocking effect Effects 0.000 claims description 8
- 230000007257 malfunction Effects 0.000 claims description 3
- 230000009471 action Effects 0.000 abstract description 7
- 238000012546 transfer Methods 0.000 description 63
- 230000007704 transition Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 39
- 239000000872 buffer Substances 0.000 description 31
- 238000011084 recovery Methods 0.000 description 29
- 238000012360 testing method Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 25
- 230000004044 response Effects 0.000 description 20
- 230000001360 synchronised effect Effects 0.000 description 17
- 238000001514 detection method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 8
- 230000002457 bidirectional effect Effects 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 8
- 230000000630 rising effect Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 238000007710 freezing Methods 0.000 description 5
- 230000008014 freezing Effects 0.000 description 5
- 238000001816 cooling Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000003745 diagnosis Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 229940127593 SEQ-9 Drugs 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000013024 troubleshooting Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000009474 immediate action Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1633—Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/165—Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Retry When Errors Occur (AREA)
Description
- Diese Erfindung betrifft allgemein eine Fehlerverarbeitung in fehlertoleranten Rechensystemen und insbesondere ein Verfahren zum softwaremäßigen Verarbeiten bestimmter Fehler.
- Der Computer-Ressourcen-Overhead bei der software-mäßigen Fehlerverarbeitung läßt die Operation eines Computersystems langsamer werden. Ein völlig robustes System, das eine vollständige softwaremäßige Prüfung und Analyse aller erfaßter Fehler durchführt, wird äußerst uneffizient. Zusätzlich können wichtige durch das Computersystem durchgeführte Operationen deshalb, weil beim Ausführen von Datenverarbeitungsoperationen zum Beheben und Lokalisieren eines Fehlers zuviel Zeit verbraucht wird, unangemessen stark verzögert oder vereitelt werden.
- Trotz der Probleme einer solchen Verzögerung machen es viele herkömmliche Fehlerverarbeitungsschemen erforderlich, daß das Computersystem normale Datenverarbeitungsoperationen aufschiebt und Datenverarbeitungsoperationen für jeden erfaßten Fehler ausführt. Eine derartige Operation ist unwirtschaftlich.
- Andererseits wird oft eine softwaremäßige Analyse benötigt, um sicherzustellen, daß alle Fehler richtig bearbeitet werden. Eine richtige Fehlerbearbeitung erfordert allgemein ein Aufzeichnen bzw. Festhalten des Fehlers, möglichst ein Lokalisieren der Fehlerquelle und möglichst ein Wiederaufnehmen der Operation.
- Es ist vorteilhaft, die Unterbrechung normaler Datenverarbeitungsoperationen durch softwaremäßige Fehlerbearbeitungsverfahren zu minimieren.
- Es ist auch vorteilhaft für die vorliegende Erfindung, eine geeignete Verwendung softwaremäßiger Fehlerbearbeitungsverfahren zum Maximieren der Effizienz des Systems sicherzustellen.
- Computer, Bd. 17, Nr.8, August 1984, LONG BEACH US, Seiten 19-30; Omri Ser- Im: "Fault-Tolerant Systems in Commercial Applications" erörtert eine große Anzahl von Ansätzen zum Implementieren fehlertoleranter Computersysteme mit den Merkmalen, die den Oberbegriff des beigefügten Patentanspruchs 1 bilden.
- Die vorliegende Erfindung überwindet die Probleme herkömmlicher Systeme und erreicht die oben aufgelisteten Vorteile durch ein Bestimmen, ob der Fehler die fortgeführte zuverlässige Operation des Datenverarbeitungssystems verhindert. Wenn dies so ist, wird das den Fehler verursachende Element sofort gesperrt. Sonst wird jenes Element davon abgehalten, weitere Fehler zu verursachen oder dem System zu schaden, und wird zu einer späteren Zeit gesperrt.
- Genauer gesagt ist gemäß der vorliegenden Erfindung, wie sie hier ausgebildet und ausführlich beschrieben ist, ein Verfahren geschaffen, wie es im Anspruch 1 angegeben ist. Das Verfahren sieht eine Behebung von Fehlern vor, die in Modulen eines Datenverarbeitungssystems auftreten, das eine Vielzahl individuell identifizierbarer Datenverarbeitungsmodule enthält, die dem Datenverarbeitungssystem erlauben, Datenverarbeitungsoperationen auszuführen. Das Verfahren weist die Schritte eines Erfassens des Vorhandenseins eines durch eines der Datenverarbeitungsmodule vewrsachten Fehlers während der Ausführung einer der Datenverarbeitungsoperationen und eines Durchführens einer Fehlerverarbeitungsprogramm im Datenverarbeitungssystem auf.
- Das Fehlerverarbeitungsprogramm enthält folgende Unterschritte: Identifizieren des jeweiligen der Datenverarbeitungsmodule als Fehlermodul, das den erfaßten Fehler verursachte, Identifizieren der Art des Fehlers, Bestimmen aus der Art des Fehlers, ob das Datenverarbeitungssystem eine Operation trotz des Vorhandenseins des Fehlers zuverlässig fortführen kann, Sperren des Fehlermoduls für eine weitere Operation bei dem Datenverarbeitungssystem, wenn das Datenverarbeitungssystem eine Operation aufgrund des Fehlers nicht zuverlässig fortführen kann, und Abhalten des Fehlermoduls von einem Verursachen zusätzlicher Fehler, wenn das Datenverarbeitungssystem eine Operation trotz des Fehlers zuverlässig fortführen kann.
- Die beigefügten Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil davon bilden, stellen ein Ausführungsbeispiel der Erfindung dar und erklären zusammen mit der Beschreibung der Erfindung die Prinzipien der Erfindung.
- Fig. 1 ist ein Blockdiagramm eines bevorzugten Ausführungsbeispiels des fehlertoleranten Computersystems, das die vorliegende Erfindung in der Praxis darstellt;
- Fig. 2 ist eine Darstellung der physikalischen Hardware, die das fehlertolerante Computersystem in Fig. 1 enthält;
- Fig. 3 ist ein Blockdiagramm des CPU-Moduls, das im in Fig. 1 gezeigten fehlertoleranten Computersystem gezeigt ist;
- Fig. 4 ist ein Blockdiagramm eines mit einem I/O-Modul verbundenen CPU-Moduls für das in Fig. 1 gezeigte Computersystem;
- Fig. 5 ist ein Blockdiagramm eines Speichermoduls für das in Fig. 1 gezeigte fehlertolerante Computersystem;
- Fig. 6 ist ein detailliertes Diagramm der Elemente der Steuerlogik im in Fig. 5 gezeigten Speichermodul;
- Fig. 7 ist ein Blockdiagramm von Teilen der primären Speichersteuerung des in Fig. 3 gezeigten CPU-Moduls;
- Fig. 8 ist ein Blockdiagramm der DMA-Maschine in der primären Speichersteuerung des CPU-Moduls der Fig. 3;
- Fig. 9 ist ein Diagramm einer Fehlerverarbeitungsschaltung in der primären Speichersteuerung des CPU-Moduls der Fig. 3;
- Fig. 10 ist eine Zeichnung einiger der Register der Kreuzungsstelle im in Fig. 3 gezeigten CPU-Modul;
- Fig. 11 ist ein Blockdiagramm der Elemente, die Steuersignale in den Kreuzungsstellen des in Fig. 3 gezeigten CPU-Moduls führen;
- Fig. 12 ist ein Blockdiagramm der Elemente, die Daten- und Adressensignale in der primären Kreuzungsstelle des in Fig. 3 gezeigten CPU-Moduls führen;
- Fig. 13 ist ein Zustandsdiagramm, das die Zustände für die Kreuzungsstelle des in Fig. 3 gezeigten CPU-Moduls zeigt;
- Fig. 14 ist ein Blockdiagramm des Zeitsystems für das fehlertolerante Computersystem der Fig. 1;
- Fig. 15 ist ein Zeitdiagramm für die Taktsignale, die durch das Zeitsystem in Fig. 14 erzeugt werden;
- Fig. 16 ist ein detailliertes Diagramm eines Phasendetektors für das in Fig. 14 gezeigte Zeitsystem;
- Fig. 17 ist ein Blockdiagramm eines I/O-Moduls für das Computersystem der Fig. 1;
- Fig. 18 ist ein Blockdiagramm des Firewall-Elements im in Fig. 17 gezeigten I/O- Modul;
- Fig. 19 ist ein detailliertes Diagramm der Elemente des Kreuzungsstellenpfads für das Computersystem der Fig. 1;
- Fig. 20A-20E sind Daten-Ablaufdiagramme für das Computersystem in Fig. 1;
- Fig. 21 ist ein Blockdiagramm einer Zone 20, die das Führen von Rücksetzsignalen zeigt;
- Fig. 22 ist ein Blockdiagramm der bei Reicksetzungen im in Fig. 3 gezeigten CPU- Modul enthaltenen Komponenten; und
- Fig. 23 ist ein Diagramm einer Taktrücksetzschaltung.
- Fig. 24 ist ein Ablaufdiagramm, das ein gesamtes hardwaremäßiges Fehlerbearbeitungsverfahren für das Computersystem in Fig. 1 darstellt;
- Fig. 25a und 25b sind miteinander ein Ablaufdiagramm eines Verfahrens zum Bearbeiten von CPU-I/O-Fehlern im Verfahren der Fig. 24;
- Fig. 26 ist ein Blockdiagramm, das die Fehlerleitungen und verschiedene bei Fehlerverarbeitungsverfahren verwendete Elemente für das Computersystem in Fig. 1 zeigt;
- Fig. 27 ist ein Blockdiagramm, das die Stelle von Ablaufverfolgungs-RAMs innerhalb des Computersystems in Fig. 1 zeigt;
- Fig. 28 ist ein Blockdiagramm eines Ablaufverfolgungs-RAMs für das Computersystem in Fig. 1;
- Fig. 29 ist ein Ablaufdiagramm, daß das Verfahren zum Beheben eines DMA- Fehlers innerhalb des gesamten hardwaremäßigen Fehlerverarbeitungsverfahrens der Fig. 24 darstellt;
- Fig. 30 ist ein Ablaufdiagramm, das ein Verfahren zum Bearbeiten von CPU/MEM- Störungen bzw.-Ausfällen innerhalb des Verfahrens der Fig. 24 darstellt;
- Fig. 31 ist ein Ablaufdiagramm, das ein gesamtes softwaremäßiges Fehlerbearbeitungsverfahren für das Computersystem in Fig. 2 darstellt;
- Fig. 32 ist ein Ablaufdiagramm, das die CPU-I/O-Fehlerabwicklung der Fig. 31 darstellt;
- Fig. 33 ist ein Ablaufdiagramm, das die Abwicklung für eine ausgefallene Vorrichtung der Fig. 32 darstellt;
- Fig. 34 ist eine Darstellung einer Systemadressen-Umwandlungstabelle, die im Computersystem in Fig. 1 verwendet wird;
- Fig. 35 ist eine Darstellung eines Beispiels eines im Computersystem in Fig. 1 verwendeten Vorrichtungstreibers;
- Fig. 36 ist ein Ablaufdiagramm der CPU/MEM-Störungsabwicklung der Fig. 31;
- Fig. 37 ist ein Ablaufdiagramm der Taktfehlerabwicklung der Fig. 31;
- Fig. 38 ist ein Ablaufdiagramm des NXM-Fehlerabwicklung der Fig. 31;
- Fig. 39 ist ein Ablaufdiagramm, das ein Verfahren für die Umwandlung von für eine Schiene eindeutigen Daten in Zonendaten für das Computersystem in Fig. 1 darstellt; und
- Fig. 40 ist ein Ablaufdiagramm eines Verfahrens zum Bewegen von Zonendaten zu Systemdaten.
- Nun wird detailliert auf ein gegenwärtig bevorzugtes Ausführungsbeispiel der Erfindung Bezug genommen, wovon ein Beispiel in den beigefügten Zeichnungen dargestellt ist.
- Fig. list ein Blockdiagramm eines fehlertoleranten Computersystems 10 gemäß der vorliegenden Erfindung. Das fehlertolerante Computersystem 10 enthält duplizierte bzw. redundante Systeme, die Zonen genannt werden. Im Normalbetrieb arbeiten die Zonen 11 und 11' gleichzeitig. Die Doppelstruktur stellt sicher, daß es keine einzelne Stelle für einen Störung gibt und daß ein einzelner Fehler oder ein Fehler in einer der Zonen 11 oder 11' das Computersystem 10 nicht stil legt. Weiterhin können alle derartigen Fehler durch Blockieren oder Nichtbeachten der Vorrichtung oder des Elements korrigiert werden, die bzw. das den Fehler verursachte. Die Zonen 11 und 11' sind in Fig. 1 jeweils derart gezeigt, daß sie doppelte Verarbeitungssysteme 20 und 20' enthalten. Die Dualität geht jedoch über das Verarbeitungssystem hinaus.
- Fig. 2 enthält eine Darstellung der physikalischen Hardware des fehlertoleranten Computersystems 10 und stellt graphisch die Doppelstruktur der Systeme dar. Jede Zone 11 und 11' ist in einem anderen Gehäuse 12 bzw. 12' untergebracht. Das Gehäuse 12 enthält eine Batterie 13, einen Leistungsregler 14, Kühlungsventilatoren 16 und einen Wechselstromeingang 17. Das Gehäuse 12' enthält den Elementen 13, 14, 16 und 17 des Gehäuses 12 entsprechende Einzelelemente.
- Wie es unten ausführlicher erklärt wird, enthalten die Verarbeitungssysteme 20 und 20' mehrere Module, die über Rückwandleiterplatten miteinander verbunden sind.
- Wenn bei einem Modul ein Ausfall oder einen Fehler auftritt, kann jenes Modul entfernt werden und ohne Blockieren des Computersystems 10 ersetzt werden. Dies ist so, weil die Verarbeitungssysteme 20 und 20' physikalisch getrennt sind, einzelne Rückwandleiterplatten haben, in die die Module eingesteckt sind, und unabhängig voneinander arbeiten können. Somit können Module aus der Rückwandleiterplatte eines Verarbeitungssystems entfernt und in diese eingesteckt werden, während das andere Verarbeitungssystem weiterarbeitet.
- Beim bevorzugten Ausführungsbeispiel sind die doppelten Verarbeitungssysteme 20 und 20' identisch und enthalten identische Module. Daher wird nur ein Verarbeitungssystem 20 vollständig beschrieben, wobei verstanden werden soll, daß das Verarbeitungssystem 20' äquivalent zu diesem arbeitet.
- Das Verarbeitungssystem 20 enthält ein CPU-Modul 30, das detaillierter in den Fig. 3 und 4 gezeigt ist. Das CPU-Modul 30 ist mit einem CPU-Modul 30' im Verarbeitungssystem 20' durch einen Kreuzungsstellenpfad 25 verbunden, der unten ausführlicher beschrieben ist. Der Kreuzungsstellenpfad 25 schafft Datenübertragungspfade zwischen den Verarbeitungssystemen 20 und 20' und trägt Zeitsignale, um sicherzustellen, daß die Datenverarbeitungssysteme 20 und 20' synchron zueinander arbeiten.
- Das Verarbeitungssystem 20 enthält auch I/O-Module 100, 110 und 120. Die I/O- Module 100, 110, 120, 100', 110' und 120' sind unabhängige Vorrichtungen. Das I/O-Modul 100 ist ausführlicher in den Fig. 1, 4 und 17 gezeigt. Obwohl viele I/O- Module gezeigt sind, ist eine Duplizierung solcher Module für das System nicht erforderlich. Ohne eine derartige Duplizierung wird jedoch ein gewisses Maß an Fehlertoleranz verloren.
- Jedes der I/O-Module 100, 110 und 120 ist mit dem CPU-Modul 30 durch duale Schienen-Modulverbindungen 130 und 132 verbunden. Die Modulverbindungen 130 und 132 dienen als I/O-Verbindung und werden über die Rückwandleiterplatte für das Verarbeitungssystem 20 geführt. In dieser Anmeldung wird der Datenpfad mit einer CPU 40, einer Speichersteuerung 70, einer Verzweigung 90 und einer Modulverbindung 130 als eine Schiene angesehen, und der Daten pfad mit einer CPU 50, einer Speichersteuerung 75, einer Verzweigung 95 und einer Modulverbindung 132 wird als eine weitere Schiene angesehen. Während einer richtigen Operation sind die Daten auf beiden Schienen dieselben.
- Das fehlertolerante Computersystem 10 hat keine einzelne Fehlerstelle, weil jedes Element doppelt vorhanden ist. Die Verarbeitungssysteme 20 und 20' sind ein jeweiliges Fehlerstop-Verarbeitungssystem, was bedeutet, daß alle Systeme Ausfälle oder Fehler in den Untersystemen erfassen und eine unkontrollierte Ausbreitung solcher Ausfälle und Fehler zu anderen Untersystemen verhindern können, aber eine einzelne Fehlerstelle haben, weil die Elemente im jeweiligen Verarbeitungssystem nicht doppelt vorhanden sind.
- Die zwei Fehlerstop-Verarbeitungssysteme 20 und 20' sind durch bestimmte Elemente verbunden, die auf eine definierte Weise arbeiten, um ein ausfallsicheres System zu bilden. Im ausfallsicheren System, das als fehlertolerantes Computersystem 10 aufgebaut ist, kann das gesamte Computersystem selbst dann eine Verarbeitung fortführen, wenn eines der Fehlerstop-Verarbeitungssysteme 20 und 20' fehlerbehaftet ist.
- Die zwei Fehlerstop-Verarbeitungssysteme 20 und 20' werden derart angesehen, daß sie im Verriegelungsschritt synchron zueinander arbeiten, weil die CPUs 40, 50, 40' und 50' derart synchron arbeiten. Es gibt drei signifikante Ausnahmen. Die erste tritt bei einer Initialisierung auf, wenn eine Hochfahrtechnik beide Prozessoren synchron zueinander macht. Die zweite Ausnahme tritt dann auf, wenn die Verarbeitungssysteme 20 und 20' unabhängig (asynchron) an zwei unterschiedlichen Arbeitslasten arbeiten. Die dritte Ausnahme tritt dann auf, wenn bestimmte Fehler in den Verarbeitungssystemen 20 und 20' auftreten. Bei dieser letzten Ausnahme werden die CPU und Speicherelemente in einem der Verarbeitungssysteme gesperrt, um dadurch eine synchrone Operation zu beenden.
- Wenn das System im Verriegelungsschritt I/O läuft, wird zu einem beliebigen Zeitpunkt nur auf eine I/O-Vorrichtung zugegriffen. Alle vier CPUs 40, 50, 40' und 50' würden jedoch dieselben Daten zu im wesentlichen demselben Zeitpunkt von jener I/O-Vorrichtung empfangen. Bei der folgenden Erörterung soll verstanden werden, daß eine Verriegelungsschritt-Synchronisierung der Verarbeitungssysteme bedeutet, daß nur auf ein I/O-Modul zugegriffen wird.
- Der Synchronismus der duplizierten Verarbeitungssysteme 20 und 20' ist durch Behandeln jedes Systems als deterministische Maschine implementiert, die im selben bekannten Zustand und beim Empfang derselben Eingaben beginnend bei Abwesenheit eines Fehlers immer dieselben Maschinenzustände eingibt und dieselben Ergebnisse erzeugt. Die Verarbeitungssysteme 20 und 20' sind identisch aufgebaut, empfangen dieselben Eingaben und durchlaufen daher dieselben Zustände. Somit sollten sie, solange beide Prozessoren synchron zueinander arbeiten, dieselben Ergebnisse erzeugen und in denselben Zustand eintreten. Wenn die Verarbeitungssysteme nicht im selben Zustand sind oder unterschiedliche Ergebnisse erzeugen, wird angenommen, daß eines der Verarbeitungssysteme 20 und 20' fehlerbehaftet ist. Die Fehlerquelle muß dann isoliert werden, um eine Korrekturhandlung vorzunehmen, wie beispielsweise ein Blockieren des Fehlermoduls.
- Eine Fehlererfassung enthält allgemein einen zusätzlichen Aufwand in Form zusätzlicher Verarbeitungszeit oder einer Zusatzlogik. Zum Minimieren eines solchen zusätzlichen Aufwandes sollte ein System eine Fehlerprüfung entsprechend einer fehlertoleranten Operation so wenig häufig wie möglich durchführen. Zumindest muß eine Fehlerprüfung erfolgen, bevor Daten von den CPU-Modulen 30 und 30' ausgegeben werden. Sonst können interne Verarbeitungsfehler eine unrichtige Operation in externen Systemen wie einem Kernreaktor verursachen, was die Ursache dafür ist, zu dessen Verhinderung die fehlertoleranten Systeme entwickelt sind.
- Es gibt Gründe für ein zusätzliches Fehlerprüfen. Beispielsweise ist es zum Isolieren von Ausfällen oder Fehlern erwünscht, die von den CPU-Modulen 30 und 30' empfangenen Daten vor einer Speicherung oder Verwendung zu prüfen. Sonst wird es dann, wenn später auffehlerhafte gespeicherte Daten zugegriffen wird, was in zusätzlichen Fehlern resultiert, schwierig oder unmöglich, die ursprüngliche Fehlerquelle zu finden, und zwar insbesondere dann, wenn die fehlerhaften Daten für eine gewisse Zeit gespeichert sind. Das Verstreichen von Zeit sowie eine nachfolgende Verarbeitung der fehlerhaften Daten können jede Spur zurück zur Fehlerquelle zerstören.
- Eine "Fehlerlatenzzeit", die die Zeitdauer ist, für die ein Fehler vor einer Erfassung gespeichert ist, kann ebenso spätere Probleme verursachen. Beispielsweise kann eine selten verwendete Routine einen latenten Fehler aufdecken, wenn das Computersystem aufgrund eines vorherigen Fehlers schon mit verringerter Kapazität arbeitet. Wenn das Computersystem eine verringerte Kapazität hat, kann der Latenzzeit-Fehler dazu führen, daß das System zusammenbricht.
- Weiterhin ist es bei den zweigleisigen Systemen der Verarbeitungssysteme 20 und 20' wünschenswert, vor einem Übertragen von Daten zu eingleisigen Systemen, wie beispielsweise einem geteilten Mittel wie einem Speicher, auf Fehler zu prüfen. Der Grund dafür ist, daß es nach solchen Übertragungen keine zwei unabhängigen Datenquellen mehr gibt, und wenn später im eingleisigen System irgendein Fehler erfaßt wird, wird eine Fehlersuche schwierig, wenn nicht unmöglich.
- Die Elemente des CPU-Moduls 30, die in Fig. 1 erscheinen, sind ausführlicher in den Fig. 3 und 4 gezeigt. Fig. 3 ist ein Blockdiagramm des CPU-Moduls, und Fig. 4 zeigt Blockdiagramme des CPU-Moduls 30 und des I/O-Moduls 100 sowie ihre Verbindungen. Es wird nur das CPU-Modul 30 beschrieben, da seine Operation und die der in den CPU-Modulen 30 und 30' enthaltenen Elemente allgemein dieselben sind.
- Das CPU-Modul 30 enthält zwei CPUs 40 und 50. Die CPUs 40 und 50 können standardmäßige Zentralverarbeitungseinheiten sein, die Fachleuten auf dem Gebiet bekannt sind. Beim bevorzugten Ausführungsbeispiel sind die CPUs 40 und 50 VAX-Mikroprozessoren, die von Digital Equipment Corporation, dem Anmelder dieser Anmeldung, hergestellt sind.
- Zu den CPUs 40 und 50 gehören jeweils Cache-Speicher 42 und 52, die standardmäßige Cache-RAMs mit ausreichender Speichergröße für die CPUs sind. Beim bevorzugten Ausführungsbeispiel hat der Cache-RAM eine Größe von 4K x 64 Bits. Es ist für die vorliegende Erfindung jedoch nicht nötig, einen Cache- RAM zu haben.
- Vorzugsweise können die CPUs 40 und 50 bis zu vier Speichermodule 60 teilen. Fig. 5 ist ein Blockdiagramm eines Speichermoduls 60, das an das CPU-Modul 30 angeschlossen gezeigt ist.
- Während Speicher-Übertragungszyklen, Statusregister-Übertragungszyklen und EEPROM-Übertragungszyklen überträgt jedes Speichermodul 60 Daten zu und von einer primären Speichersteuerung 70 über einen bidirektionalen Datenbus 85. Jedes Speichermodul 60 empfängt auch Adressen-, Steuerungs-, Zeitgabe- und ECC-Signale von Speichersteuerungen 70 und 75 über jeweilige Busse 80 und 82. Die Adressensignale auf den Bussen 80 und 82 enthalten Karten-, Bank- und Zeilen- und Spalten-Adressensignale, die die Speicherkarten-, die Speicherbank- und die Zeilen- und Spalten-Adresse identifizieren, die an der Datenübertragung beteiligt sind.
- Wie es in Fig. 5 gezeigt ist, enthält jedes Speichermodul 60 eine Speichermatrix 600. Jede Speichermatrix 600 ist ein standardmäßiges RAM, in dem die DRAMs in acht Speicherbänken bzw. Speichereinheiten organisiert sind. Beim bevorzugten Ausführungsbeispiel werden DRAMs vom Schnellseiten-Betriebsartentyp verwendet.
- Das Speichermodul 60 enthält auch eine Steuerlogik 610, Datentransceiver/Register 620, Speichertreiber 630 und einen EEPROM 640. Die Datentransceiver/Register 620 bieten einen Datenpuffer und eine Datenschnittstelle zum Übertragen von Daten zwischen der Speichermatrix 600 und den bidirektionalen Datenleitungen des Datenbusses 85. Die Speichertreiber 630 verteilen Zeilen- und Spalten-Adressensignale und Steuersignale von der Steuerlogik 610 zu jeder Bank in der Speichermatrix 600, um eine Übertragung eines Daten-Langwortes und seine entsprechenden ECC-Signale zu oder von der Speicherbank freizugeben, die durch die Speicherkarten- und Speicherbank-Adressensignale ausgewählt ist.
- Das EEPROM 540, das irgendeine Art von NVRAM (nichtflüchtiger RAM) sein kann, speichert Speicherfehlerdaten für offlinemäßige Reparatur- und Konfigurationsdaten, wie beispielsweise eine Modulgröße. Wenn das Speichermodul nach einem Ausfall entfernt wird, werden gespeicherte Daten vom EEPROM 640 extrahiert, um den Grund für den Ausfall zu bestimmen. Der EEPROM 640 wird über Zeilenadressenleitungen von den Treibern 630 und durch EEPROM-Steuersignale von der Steuerlogik 610 adressiert. Der EEPROM 640 überträgt acht Datenbits zu und von einem internen Speicherdatenbus 645 mit zweiunddreißig Bits.
- Die Steuerlogik 610 führt Adressensignale zu den Elementen des Speichermoduls 60 und erzeugt interne Zeitgabe- und Steuersignale. Wie es ausführlicher in Fig. 6 gezeigt ist, enthält die Steuerlogik 610 eine Primär-/Spiegel-Bestimmungsschaltung 612.
- Die Primär-/Spiegel-Bestimmungsschaltung 612 empfängt zwei Gruppen von Speicherkartenadressen-, Bankadressen-, Zeilen- und Spaltenadressen-, Zyklustyp- und Zykluszeitgabesignalen von den Speichersteuerungen 70 und 75 auf den Bussen 80 und 82 und überträgt auch zwei Gruppen von ECC-Signalen zu oder von den Speichersteuerungen auf den Bussen 80 und 82. Transceiver/Register in der Bestimmungseinheit 612 bieten einen Puffer und eine Schnittstelle zum Übertragen dieser Signale zu und von den Speicherbussen 80 und 82. Ein Primär-/Spiegel- Multiplexbit, das in einem Statusregister 618 gespeichert ist, zeigt an, welche der Speichersteuerungen 70 und 75 als Primär-Speichersteuerung bezeichnet ist und welche als Spiegel-Speichersteuerung bezeichnet ist, und ein Primär-/Spiegel- Multiplexsignal wird von den Statusregistern 618 zur Bestimmungseinheit 612 geliefert.
- Die Primär-/Spiegel-Bestimmungseinheit 612 liefert zwei Gruppen von Signalen zur Verteilung in der Steuerlogik 610. Eine Gruppe von Signalen enthält bestimmte primäre Speicherkartenadressen-, Bankadressen-, Zeilen- und Spaltenadressen-, Zyklustyp-, Zykluszeitgabe-, und ECC-Signale. Die andere Gruppe von Signalen enthält bestimmte Spiegel-Speicherkartenadressen, Bankadressen-Zeilen- und Spaltenadressen-, Zyklustyp-, Zykluszeitgabe- und ECC-Signale. Das Primär-/Spiegel-Multiplexsignal wird durch die Bestimmungseinheit 612 zum Auswählen verwendet, ob die Signale auf den Bussen 80 und 82 jeweils zu den Leitungen zum Führen bestimmter primärer Signale und zu den Leitungen zum Führen bestimmter Spiegelsignale geführt werden oder umgekehrt.
- In den Bussen 80 und 82 ist eine Anzahl bidirektionaler Zeitmultiplexleitungen enthalten. Zu bestimmten Zeiten nach dem Beginn von Speicher-Übertragungszyklen, Statusregister-Übertragungszyklen und EEPROM-Übertragungszyklen werden ECC-Signale entsprechend den Daten auf dem Datenbus 85 auf diesen bidirektionalen Zeitmultiplexleitungen angeordnet. Wenn der Übertragungszyklus ein Schreibzyklus ist, empfängt das Speichermodul 60 Daten und ECC-Signale von den Speichersteuerungen. Wenn der Übertragungszyklus ein Lesezyklus ist, sendet das Speichermodul 60 Daten und ECC-Signale zu den Speichersteuerungen. Zu anderen Zeiten werden während Übertragungszyklen Adressen-, Steuer- und Zeitgabesignale durch das Speichermodul 60 auf den bidirektionalen Zeitmultiplexleitungen empfangen. Vorzugsweise zu Beginn von Speicher- Übertragungszyklen, Statusregister-Übertragungszyklen und EEPROM- Übertragungszyklen senden die Speichersteuerungen 70 und 75 Speicherkartenadressen-, Bankadressen- und Zyklustypsignale auf diesen zeitlich aufgeteilten Leitungen zu jedem Speichermodul 60.
- Vorzugsweise werden während Übertragungszyklen Zeilenadressensignale und Spaltenadressensignale auf denselben Zeilen- und Spaltenadressenleitungen multiplext. Zuerst wird eine Zeilenadresse durch die Speichersteuerungen zum Speichermodul 60 geliefert, der etwa sechzig Nanosekunden später eine Spaltenadresse folgt.
- Eine Ablaufsteuerung 616 empfängt als Eingaben ein Systemtaktsignal und ein Rücksetzsignal vom CPU-Modul 30 und empfängt die bestimmten primären Zykluszeitgabe-, die bestimmten primären Zyklustyp-, und die bestimmten Spiegelzykluszeitgabe- und die bestimmten Spiegelzyklustyp-Signale von den Transceivern/Registern in der Bestimmungseinheit 612.
- Die Ablaufsteuerung 616 ist ein Ringzähler mit zugehöriger Steuerlogik, die eine Anzahl von Steuer- und Ablauffolgenzeitgabesignalen für das Speichermodul erzeugt und verteilt, die dazu benötigt werden, die verschiedenen Zyklustypen auszuführen. Die Steuer- und Ablauffolgenzeitgabesignale werden aus den Systemtaktsignalen, den bestimmten primären Zykluszeitgabesignalen und den bestimmten primären Zyklustypsignalen erzeugt.
- Die Ablauffolgesteuerung 616 erzeugt auch eine duplizierte Gruppe von Ablauffolgezeitgabesignalen aus den Systemtaktsignalen, den bestimmten Spiegelzykluszeitgabesignalen und den bestimmten Spiegelzyklustypsignalen. Diese duplizierten Ablauffolgezeitgabesignale werden zur Fehlerüberprüfung verwendet. Für Datenübertragungen von äußerst langen Daten-Langworten zum und vom Speichermodul 60 in einem Schnellseitenbetrieb folgt jeder Gruppe von Spaltenadressen beginnend mit der ersten Gruppe die nächste Spaltenadresse 120 Nanosekunden später, und jedes Daten-Langwort wird 120 Nanosekunden nach dem vorherigen Daten-Langwort über den Bus 85 bewegt.
- Die Ablauffolgesteuerung 616 erzeugt auch txlrx-Register-Steuersignale. Die tx/rx- Register-Steuersignale werden zum Steuern der Operation der Daten- Transceiver/Register 620 und der Transceiver/Register in der Bestimmungseinheit 612 erzeugt. Die Richtung des Datenflusses wird durch die Steuerlogik in der Ablauffolgesteuerung 616 bestimmt, die auf die bestimmten primären Zyklustypsignale durch Erzeugen von tx/rx-Steuer- und Ablauffolgezeitgabesignale antwortet, um anzuzeigen, ob und wann Daten und ECC-Signale in die Transceiver/Register im Speichermodul 60 geschrieben oder daraus gelesen werden sollen. Somit werden während Speicherschreibzyklen, Statusregisterschreibzyklen und EEPROM- Schreibzyklen Daten und ECC-Signale in die Transceiver/Register von den Bussen 80, 82 und 85 (zwischen-)gespeichert, wohingegen während Speicherlesezyklen, Statusregisterlesezyklen und EEPROM-Lesezyklen Daten und ECC-Signale in die Transceiver/Register von der Speichermatrix 600, vom Statusregister 618 oder vom EEPROM 640 zur Ausgabe zum CPU-Modul 30 (zwischen-)gespeichert werden.
- Die Ablauffolgesteuerung 616 erzeugt auch EEPROM-Steuersignale zum Steuern der Operation des EEPROM 640.
- Die Zeitgabebeziehungen, die im Speichermodul 60 existieren, werden unter Bezugnahme auf die Anstiegszeit des Systemtaktsignals bestimmt, die eine Periode von dreißig Nanosekunden hat. Alle Statusregisterlese- und -schreibzyklen und alle Speicherlese- und -schreibzyklen eines einzelnen Langwortes werden in zehn Systemtaktperioden, d.h. 300 Nanosekunden, durchgeführt. Speicherlese- und -schreibübertragungszyklen können aus Übertragungen von vielen Langworten bestehen. Für jedes zusätzliche Langwort, das übertragen wird, wird der Speicherübertragungszyklus um vier zusätzliche Systemtaktperioden erweitert. Speicherauffrischzyklen und EEPROM-Schreibzyklen benötigen wenigstens zwölf Systemtaktperioden zur Ausführung, und EEPROM-Lesezyklen benötigen wenigstens zwanzig Systemtaktperioden.
- Das bestimmte primäre Zykluszeitgabesignal veranlaßt, daß die Ablauffolgesteuerung 616 ein Erzeugen der Ablauffolgezeitgabe und von Steuersignalen beginnt, die dem durch die Speicherkartenadressensignale ausgewählten Speichermodul ermöglichen, einen angeforderten Zyklus zu implementieren. Der Übergang des bestimmten primären Zykluszeitgabesignals in einen aktiven Zustand markiert den Beginn des Zyklus. Die Rückkehr des bestimmten primären Zykluszeitgabesignals in einen inaktiven Zustand markiert das Ende des Zyklus.
- Die durch die Ablauffolgesteuerung 616 erzeugten Ablauffolgezeitgabesignale gehören zu den unterschiedlichen Zuständen, in die von der Ablauffolgesteuerung eingetreten wird, wenn ein durch das CPU-Modul 30 angeforderter Zyklus ausgeführt wird. Zum Spezifizieren der Zeitgabebeziehungen unter diesen unterschiedlichen Zuständen (und der Zeitgabebeziehung zwischen Ablauffolgezeitgabesignalen, die jedem dieser Zustände entsprechen), werden die diskreten Zustände, in die durch die Ablauffolgesteuerung 616 eingetreten werden kann, als Zustände SEQ IDLE und SEQ 1 bis SEQ 19 identifiziert. Jeder Zustand dauert eine einzige Systemtaktperiode (dreißig Nanosekunden). Ein Eintritt durch die Ablauffolgesteuerung 616 in jeden unterschiedlichen Zustand wird durch die führende Flanke des Systemtaktsignals getriggert. Die führenden Flanken des Systemtaktsignals, die die Ablauffolgesteuerung 616 dazu veranlassen, in die Zustände SEQ IDLE und SEQ 1 bis SEQ 19 einzutreten, werden Übergänge T IDLE und T1 bis T19 genannt, um sie auf die Ablauffolgesteuerungszustände zu beziehen, d.h. TN ist die führende Flanke des Systemtaktsignals, die die Ablaufsteuerung 616 dazu veranlaßt, in den Zustand SEQ N einzutreten.
- Zu Zeiten, zu denen das CPU-Modul 30 das Speichermodul 60 nicht zum Ausführen eines Zyklus lenkt, ist das bestimmte primäre Zykluszeitgabesignal nicht aktiviert, und die Ablaufsteuerung bleibt im Zustand SEQ IDLE. Die Ablaufsteuerung wird in Antwort auf eine Aktivierung durch die Speichersteuerung 70 des Zykluszeitgabesignals auf dem Bus 80 begonnen (sie tritt in den Zustand SEQ 1 ein), vorausgesetzt, daß die Steuerlogik 610 und die Ablauffolgesteuerung 616 in dem Speichermodul angeordnet sind, das durch die Speicherkartenadressensignale ausgewählt ist, die auch von der Speichersteuerung 70 auf dem Bus 80 gesendet werden. Die Anstiegsflanke des ersten Systemtaktsignals, das einer Aktivierung des bestimmten primären Zyklusaktivsignals folgt, entspricht einem Übergang T1.
- Wie es zuvor angezeigt ist, wird der Zyklus in dem Fall von Übertragungen eines einzelnen Langwortes zu oder von der Speichermatrix 600 in zehn Systemtaktperioden durchgeführt. Die Ablaufsteuerung geht von SEQ IDLE weiter zu den Zuständen SEQ 1 bis SEQ 9 und kehrt zurück zum Zustand SEQ IDLE.
- Speicherlese- und -schreibzyklen können zum Übertragen zusätzlicher Langworte jedoch erweitert werden. Die Speichermatrix 600 verwendet vorzugsweise "Schnellseitenbetnebs"-DRAMs. Während eines Auslesens und eines Einschreibens von vielen Langworten werden Übertragungen von Daten zu und von der Speichermatrix nach einer Übertragung des ersten Langwortes durch wiederholtes Erneuern der Spaltenadresse und ein erneutes Erzeugen eines CAS- (Spaltenadressenhinweis-)Signals erreicht.
- Während Übertragungszyklen für mehrere Langworte können diese Erneuerungen der Spaltenadresse implementiert werden, weil die Ablaufsteuerung 616 von den Zuständen SEQ 4 bis SEQ 7 wiederholt Schleifen bildet, bis alle Langworte übertragen sind. Beispielsweise tritt die Ablaufsteuerung dann, wenn drei Langworte von der Speichermatrix 600 gelesen oder dorthinein geschrieben werden, in die Zustände SEQ IDLE, SEQ 1, SEQ 2, SEQ 3, SEQ 4, SEQ 5, SEQ 6, SEQ 7, SEQ 4, SEQ 5, SEQ 6, SEQ 7, SEQ 4, SEQ 5, SEQ 6, SEQ 7, SEQ 8, SEQ 9 und SEQ IDLE ein.
- Während eines Speicherübertragungszyklus wird das bestimmte primäre Zykluszeitgabesignal durch die Ablauffolgesteuerung 616 während eines Übergangs T6 überwacht, um zu bestimmen, ob der Speicherlese- oder -schreibzyklus zu erweitern ist, um wenigstens ein zusätzliches Langwort zu übertragen. Zu Zeiten, zu de nen das bestimmte primäre Zykluszeitgabesignal während des Übergangs T6 aktiviert ist, antwortet die Ablauffolgesteuerung im Zustand SEQ 7 auf das nächste Systemtaktsignal durch Eintreten in den Zustand SEQ 4 anstelle eines Eintretens in den Zustand SEQ 8.
- Im Fall einer Übertragung mehrerer Langworte wird das bestimmte primäre Zykluszeitgabesignal wenigstens fünfzehn Nanosekunden vor dem ersten Übergang T6 aktiviert und bleibt aktiviert, bis das letzte Langwort übertragen ist. Zum Beenden eines Speicherübertragungszyklus, nachdem das letzte Langwort übertragen worden ist, wird das bestimmte primäre Zykluszeitgabesignal wenigstens fünfzehn Nanosekunden vor dem letzten Übergang T6 deaktiviert und bleibt für wenigstens zehn Nanosekunden nach dem letzten Übergang T6 deaktiviert.
- Während Speicherübertragungszyklen werden die bestimmten primären Zeilenadressensignale und die bestimmten primären Spaltenadressensignale zu verschiedenen Zeitpunkten durch die Bestimmungseinheit 612 in der Steuerlogik 610 zu den Speichertreibern 630 auf einer Gruppe von Zeitmultiplexleitungen präsentiert. Die Ausgaben der Treiber 630 werden an die Adresseneingänge der DRAMs in der Speichermatrix 600 gelegt und werden fur einen Vergleich mit den bestimmten Spiegelzeilen- und -spaltenadressensignalen zum Prüfen auf Fehler zur Steuerlogik 610 zurückgebracht Während Statusregisterübertragungszyklen und EEPROM-Übertragungszyklen werden zum Auswählen einer bestimmten Speicherstelle keine bestimmten Spaltenadressensignale benötigt.
- Während eines Speicherübertragungszyklus sind Zeilenadressensignale die ersten Signale, die auf den zeitlich aufgeteilten Zeilen- und Spaltenadressenleitungen der Busse 80 und 82 präsentiert werden. Während des Zustandes SEQ IDLE werden Zeilenadressensignale durch die Speichersteuerungen auf den Zeilen- und Spaltenadressenleitungen übertragen, und die Zeilenadresse ist von wenigstens fünfzehn Nanosekunden vor dem Übergang T1 bis zehn Nanosekunden nach dem Übergang T1 stabil. Als nächstes werden Spaltenadressensignale durch die Speichersteuerungen auf den Zeilen- und Spaltenadressenleitungen übertragen, und die Spaltenadresse ist von wenigstens zehn Nanosekunden vor dem Übergang T3 bis fünfzehn Nanosekunden nach dem Übergang T4 stabil. Im Fall von Übertragungen mehrerer Langworte werden während Speicherübertragungszyklen dann nachfolgende Spaltenadressensignale auf den Zeilen- und Spaltenadressenleitungen übertragen, und diese nachfolgenden Spaltenadressen sind von zehn Nanosekunden vor dem Übergang T6 bis fünfzehn Nanosekunden nach dem Übergang T7 stabil.
- Eine Generator/Prüfeinheit 617 empfängt die zwei Gruppen von durch die Ablauffolgesteuerung 616 erzeugten Ablauffolgezeitgabesignalen. Zusätzlich werden die bestimmten primären Zyklustyp- und Bankadressensignale und die bestimmten Spiegelzyklustyp- und Bankadressensignale durch die Bestimmungseinheit 612 zur Generator/Prüfeinheit 617 gesendet. In der Generator/Prüfeinheit wird eine Anzahl primärer Steuersignale, d.h. RAS-(Zeilenadressen hinweis)-, CAS- (Spaltenadressenhinweis)- und WE-(Schreibfreigabe)-Signale unter Verwendung der primären Ablauffolgezeitgabesignale und der bestimmten primären Zyklustypund Bankadressensignale zur Aufteilung auf die Treiber 630 erzeugt. Eine duplizierte Gruppe dieser Steuersignale wird durch den Generator/Prüfer 617 aus den duplizierten (Spiegel-) Ablauffolgezeitgabesignalen und den bestimmten Spiegelzyklustyp- und Bankadressensignalen erzeugt. Diese Spiegel-RAS-, -CAS- und -Schreibfreigabe-Signale werden zur Fehlerprüfung verwendet.
- Wenn die primären Zyklustypsignale anzeigen, daß gerade ein Speicherübertragungszyklus durchgeführt wird, identifizieren die primären Bankadressensignale eine ausgewählte Bank der DRAMs in der Speichermatrix 600. Die Speichertreiber 630 enthalten einzelne RAS-Treiber für jede Bank der DRAMs in der Speichermatrix 600. In der Generator/Prüfeinheit 617 wird das primäre RAS-Signal während des Speicherübertragungszyklus erzeugt und auf eine der Leitungen demultiplext, die die Generator/Prüfeinheit mit den RAS-Treibern verbindet. Als Ergebnis empfängt nur der RAS-Treiber, der der ausgewählten DRAM-Bank entspricht, ein aktiviertes RAS-Signal während des Speicherübertragungszyklus. Während Auffrischzyklen wird das primäre RAS-Signal nicht demultiplext, und ein aktiviertes RAS- Signal wird von jedem RAS-Treiber empfangen. Während Statusregisterübertragungszyklen und EEPROM-Übertragungszyklen sind die Bankadressensignale unnötig.
- Die Speichertreiber 630 enthalten auch CAS-Treiber. In der Generator/Prüfeinheit 617 wird das primäre CAS-Signal während Speicherübertragungszyklen und Auffrischzyklen erzeugt. Das primäre CAS-Signal wird nicht demultiplext und von jedem CAS-Treiber wird ein aktiviertes CAS-Signal empfangen.
- Während Speicherschreibzyklen wird das primäre WE-Signal durch die Generator/Prüfeinheit 617 erzeugt. Das aktivierte WE-Signal wird durch die Treiber 630 zu jeder DRAM-Bank in der Speichermatrix 600 geliefert. Jedoch kann ein Schreiben nur durch die ausgewählte DRAM-Bank ausgeführt werden, die auch aktivierte RAS- und CAS-Signale empfängt.
- Beim bevorzugten Ausführungsbeispiel der Erfindung wird während Speicherübertragungszyklen das primäre RAS-Signal während des Übergangs T2 aktiviert, ist ab wenigstens zehn Nanosekunden vor dem Übergang T3 stabil und wird während des letzten Übergangs T7 deaktiviert. Das primäre CAS-Signal wird fünfzehn Nanosekunden nach jedem Übergang T4 aktiviert und wird während jedem Übergang T7 deaktiviert. Während Speicherschreibzyklen wird das primäre WE-Signal während des Übergangs T3 aktiviert, ist ab wenigstens zehn Nanosekunden vor dem ersten Übergang T4 stabil und wird während des letzten Übergangs T7 deaktiviert.
- Wenn die prlmären Zyklustypsignale anzeigen, daß gerade ein Speicherauffrischzyklus durchgeführt wird, veranlaßt die Generator/Prüfeinheit 617 die Speichermatrix 600, Speicherauffrischoperationen in Antwort auf die primären Ablauffolgezeitgabesignale durchzuführen, die durch die Ablaufsteuerung 616 geliefert werden. Während dieser Auffrischoperationen werden die RAS- und CAS-Signale durch die Generator/Prüfeinheit in umgekehrter Reihenfolge erzeugt und aufgeteilt. Diese Betriebsart des Auffrischens benötigt kein externes Adressieren für eine Bank, eine Zeile oder eine Spalte.
- Während Übertragungszyklen werden ECC-Signale auf den bidirektionalen Zeitmultiplexleitungen der Busse 80 und 82 zu Zeiten übertragen, zu denen Daten auf dem Bus 85 übertragen werden. Jedoch werden dieselben Leitungen zum Übertragen von Steuer-(z.B. Zyklustyp-) und Adressen-(z.B. Speicherkartenadressen- und Bankadressen-)Signalen zu anderen Zeiten während des Übertragungszyklus verwendet.
- Die Transceiver/Register in der Primär-/Spiegel-Bestimmungseinheit 612 enthalten Empfänger und Sender, die auf Ablauffolgezeitgabesignale und tx/rx- Registersteuersignale antworten, die durch die Ablauffolgesteuerung 616 geliefert werden. Die Ablauffolgezeitgabesignale und die tx/rx-Registersteuersignale ermöglichen ein Multiplexen von ECC-Signalen und Adressen- und Steuersignalen auf den bidirektionalen Zeitmultiplexleitungen der Busse 80 und 82.
- Vorzugsweise werden Steuer- und Adressensignale, wie beispielsweise Zyklustyp-, Speicherkartenadressen- und Bankadressensignale, durch die Speichersteuerungen 70 und 75 gesendet und auf den zeitlich aufgeteilten Leitungen der Busse 80 und 82 zu Beginn eines Übertragungszyklus entweder eines einzelnen oder von mehreren Langworten präsentiert. Diese Signale beginnen ihren Übergang (während die Ablaufsteuerung im Zustand SEQ IDLE ist) gleichzeitig mit einer Aktivierung des Zykluszeitgabesignals und bleiben während T2 stabil. Daher werden bei den Transceivern/Registern der Bestimmungseinheit 612 die Empfänger freigegeben, und die Sender wenigstens bis zum Ende des Zustands SEQ 2 freigegeben, und die Sender werden in ihre Tristate-Betriebsart versetzt.
- Die Zyklustypsignale identifizieren, welche der folgenden aufgelisteten Funktionen durch die Speichermatrix 60 während des Zyklus durchgeführt werden: ein Speicherlesen, ein Speicherschreiben, ein Statusregisterlesen, ein Statusregisterschreiben, ein EEPROM-Lesen, ein EEPROM-Schreiben und ein Auffrischen. Die bestimmten primären Zyklustypsignale, die durch die Bestimmungseinheit 612 empfangen werden, werden zur Ablauffolgesteuerung 616 geliefert und beim Erzeugen von tx/rx-Steuersignalen und Ablauffolgezeitgabesignalen verwendet. Beispielsweise werden in den Daten-Transceivern/Registern 620 und in den Transceivern/Registern der Bestimmungseinheit 612 die Empfänger durch die Ablauffolgesteuerung 616 während eines gesamten Schreibzyklus freigegeben, und die Sender werden in ihre Tristate-Betriebsart versetzt. Jedoch werden in den Daten- Transceivern/Registern 620 und in den Transceivern/Registern der Bestimmungseinheit 612 während eines Lesezyklus die Empfänger in ihre Tristate-Betriebsart versetzt, und die Sender werden durch die Ablauffolgesteuerung 616 freigegeben, nachdem die Zyklustyp-, die Speicherkartenadressen- und Bankadressensignale zu Beginn des Zyklus empfangen worden sind.
- Beim bevorzugten Ausführungsbeispiel werden zu oder von der Speichermatrix 600 übertragene Daten in jedem Speichermodul 60 unter Verwendung eines Fehlererfassungscodes (EDC) geprüft, der vorzugsweise derselbe Code ist, der bei den Speichersteuerungen 70 und 75 erforderlich ist. Der bevorzugte Code ist ein Korrigieren eines Einzelbits, ein Erfassen von Doppelbits, und ein Fehlerkorrekturcode (ECC).
- Während eines Speicherschreibzyklus sendet die Speichersteuerung 70 wenigstens ein Daten-Langwort auf den Datenbus 85 und sendet gleichzeitig eine entsprechende Gruppe von ECC-Signalen auf den Bus 80. Zwischenzeitlich sendet die Speichersteuerung 75 eine zweite Gruppe von ECC-Signalen, die auch dem Langwort auf dem Datenbus 85 entspricht, auf dem Bus 82.
- Wie es hierin ausgeflihrt ist, werden die Daten und die ECC-Signale für jedes Langwort während eines Speicherschreibzyklus den Empfängern der Daten- Transceiver/Register 620 und den Empfängern der Transceiver/Register der Bestimmungseinheit 612 präsentiert. Die Daten und die ECC-Signale, die wenigstens zehn Nanosekunden vor dem Übergang T4 stabil sind und bis fünfzehn Nanosekunden nach dem Übergang T6 stabil bleiben, werden in diese Transceiver/Register (zwischen-)gespeichert. Während dieser Zeitperiode liefern die Speichersteuerungen 70 und 75 keine Adressen- und Steuersignale auf den zeitlich aufgeteilten Leitungen der Busse 80 und 82.
- Die bestimmten primären ECC-Signale, die von der Bestimmungseinheit 612 empfangen werden, und das Daten-Langwort, das durch die Transceiver/Register 620 empfangen werden, werden während des Speicherschreibzyklus zu den Dateneingängen der DRAMs in jede der acht Banken der Speichermatrix 600 und zum ECC-Generator 623 geliefert. Der erzeugte ECC wird mit dem bestimmten primären ECC durch einen Komparator 625 verglichen. Die bestimmten primären ECC-Signale werden zusammen mit den bestimmten Spiegel-ECC-Signalen auch zu den ECC-Komparatoren 625 geliefert.
- Wie es hierin ausgeführt ist, werden während eines Speicherlesezyklus wenigstens ein Daten-Langwort und eine entsprechende Gruppe von ECC-Signalen aus der Speichermatrix 600 gelesen und jeweils zu den Daten-Transceivern/Registern 620 und zu den Transceivern/Registern der Bestimmungseinheit 612 gesteuert. Während des Übergangs T7 des Speicherlesezyklus sind die Daten und die ECC- Signale für jedes Langwort von der Speichermatrix 600 verfügbar und werden in diese Transceiver/Register (zwischen-)gespeichert. Die Daten werden auch dem ECC-Generator 623 präsentiert, und seine Ausgabe wird mit dem aus dem Speicher gelesenen ECC verglichen.
- Nach dem (Zwischen-)Speichem werden die Daten und die ECC-Signale durch die Sender der Daten-Transceiver/Register 620 und durch die Sender der Transceiver/Register der Bestimmungseinheit 612 dem Datenbus 85 und den Bussen 80 und 82 präsentiert. Dieselben ECC-Signale werden von den Transceiver/Registern in der Bestimmungseinheit 612 zur Speichersteuerung 70 und zur Speichersteuerung 75 gesendet. Die Daten und die ECC-Signale, die auf dem Datenbus 85 und auf den Bussen 80 und 82 gesendet werden, sind ab fünfzehn Nanosekunden nach dem Übergang T7 bis zu fünf Nanosekunden vor dem folgenden Übergang T6 (im Fall einer Übertragung mehrerer Langworte) oder bis zu fünf Nanosekunden vor dem folgenden Übergang T IDLE (im Falle einer Übertragung eines einzelnen Langwortes oder des letzten Langwortes einer Übertragung mehrerer Langworte) stabil. Während dieser Zeitperiode liefern die Speichersteuerungen 70 und 75 keine Adressen- und Steuersignale auf den zeitlich aufgeteilten Leitungen der Busse 80 und 82. Die Sender der Daten-Transceiver/Register 620 und die Sender der Transceiver/Register der Bestimmungseinheit 612 werden während des folgenden Übergangs T IDLE in ihre Tristate-Betriebsart versetzt.
- Der Komparator 614 ist vorgesehen, um die Adressen-, Steuer- und Zeitgabesignale, die von der Steuerung 70 kommen, mit den entsprechenden Adressen-, Steuerund Zeitgabesignalen, die von der Steuerung 75 kommen, zu vergleichen. Die bestimmten primären Zykluszeitgabesignale, die Zyklustypsignale, die Speicherkartenadressensignale und die Bankadressensignale zusammen mit den bezeichneten Spiegelzykluszeitgabesignalen, Zyklustypsignalen, Speicherkartenadressensignalen, Bankadressensignalen, Zeilenadressensignalen und Spaltenadressensignalen werden von der Bestimmungseinheit 612 zum Komparator 614 geliefert. Die bestimmten primären Zeilenadressensignale und Spaltenadressensignale werden von den Ausgängen der Treiber 630 zum Komparator 614 geliefert. Beide Gruppen von Signalen werden dann verglichen.
- Wenn es einen Fehlvergleich zwischen einem der Adressen-, Steuer- und Zeitgabesignale gibt, die von den Speichersteuerungen kommen, erzeugt der Komparator 614 ein geeignetes Fehlersignal. Wie es in Fig. 6 gezeigt ist, können Kartenadressenfehler-, Bankadressenfehler-, Zeilenadressenfehler-, Spaltenadressenfehler-, Zyklustypadressenfehler- und Zykluszeitgabefehlersignale durch den Komparator ausgegeben werden.
- Die Generator/Prüfeinheit 617 vergleicht die durch die Ablaufsteuerung 616 und die Generator/Prüfeinheit 617 unter Verwendung der bestimmten primären Bankadressen-, Zyklustyp- und Zykluszeitgabesignale erzeugten primären Steuer- und Zeitgabesignale mit den unter Verwendung der bestimmten Spiegelbankadressen-, Zyklustyp- und Zykluszeitgabesignale erzeugten Spiegelsteuer- und Zeitgabesignalen. Die zwei Gruppen von Ablaufzeitgabesignalen werden durch die Ablaufsteuerung 616 zur Generator/Prüfeinheit 617 geliefert. Die primären RAS-, CAS- und WE-Signale werden von den Ausgängen der Treiber 630 zur Generator/Prüfeinheit 617 geliefert. Wie es zuvor angezeigt ist, werden die Spiegel-RAS-, -CAS- und -WE-Signale intern durch die Generator/Prüfeinheit erzeugt. Die Generator/Prüfeinheit 617 vergleicht die primären RAS-, CAS-, WE- und Ablauffolgezeitgabesignale mit den Spiegel-RAS, -CAS-, -WE- und -Ablauffolgezeitgabesignalen. Wenn es einen Fehlvergleich zwischen den Steuer- und/oder den Zeitgabesignalen gibt, die von der Ablaufsteuerung 616 oder der Generator/Prüfeinheit 617 kommen, erzeugt die Generator/Prüfeinheit ein geeignetes Fehlersignal. Wie es in Fig. 6 gezeigt ist, können Ablauffolgefehler-, RAS-Fehler-, CAS-Fehler- und WE- Fehlersignale durch die Generator/Prüfeinheit 617 ausgegeben werden.
- Fehlersignale werden vom Komparator 614 und von der Generator/Prüfeinheit 617 zur Adressen/Steuerfehlerlogik 621 geliefert. In Antwort auf einen Empfang eines Fehlersignals vom Komparator 614 oder von der Generator/Prüfeinheit 617 sendet die Adressen/Steuerfehlerlogik 621 ein Adressen/Steuerfehlersignal zum CPU- Modul 30, um die Erfassung eines Fehlers aufgrund eines Fehlvergleichs zwischen iregendeinem der Adressen/Steuer- oder Zeitgabesignale anzuzeigen. Das Adressen/Steuer-Fehlersignal wird zur Steuerlogik in den Speichersteuerungen 70 und 75 zur Fehlerbearbeitung gesendet. Das Senden des Adressen/Steuer- Fehlersignais zum CPU-Modul 30 veranlaßt einen CPU/MEM-Ausfall, was in anderen Abschnitten ausführlicher erörtert wird.
- Die Fehlersignale vom Komparator 614 und von der Generator/Prüfeinheit 617 werden auch zu Statusregistern 618 geliefert. In den Statusregistern werden die Fehlersignale und alle für den Ausfall relevanten Adressen-, Steuer-, Zeitgabe-, Daten- und ECC-Signale zeitweilig gespeichert, um eine Fehlerdiagnose und -behebung zu ermöglichen.
- Gemäß einem Aspekt der Erfindung ist nur ein einzelner Zweiunddreißig-Bit- Datenbus 85 zwischen dem CPU-Modul 30 und dem Speichermodul 60 vorgesehen. Daher kann das Speichermodul 60 nicht zwei Gruppen von Daten aus den Speichersteuerungen 70 und 75 vergleichen. Jedoch wird eine Datenintegrität durch das Speichermodul 60 ohne Verwenden eines doppelten Satzes von zweiunddreißig Datenleitungen durch Prüfen der zwei getrennten Gruppen von ECC- Signalen verifiziert, die durch die Speichersteuerungen 70 und 75 zum Speichermodul 60 gesendet werden.
- Wie es in Fig. 6 gezeigt ist, enthält die Steuerlogik 610 einen ECC-Generator 623 und ECC-Komparatoren 625. Die bestimmten primären und Spiegel-ECC-Signale werden durch die Bestimmungseinheit 612 zu den ECC-Komparatoren geliefert. Während eines Speicherschreibzyklus werden die bestimmten primären ECC- Signale mit den bestimmten Spiegel-ECC-Signalen verglichen. Als Ergebnis verifiziert das Speichermodul 60, ob die Speichersteuerungen 70 und 75 in Übereinstimmung sind und ob die bestimmten primären ECC-Signale, die während des Speicherschreibzyklus gerade in den DRAMs der Speichermatrix 600 gespeichert sind, richtig sind. Weiterhin werden die den Dateneingängen der DRAMs während des Speicherschreibzyklus präsentierten Daten zum ECC-Generator 623 geliefert. Der ECC-Generator 623 erzeugt eine Gruppe erzeugter ECC-Signale, die den Daten entsprechen, und liefert die erzeugten ECC-Signale zu den ECC- Komparatoren 625. Die bestimmten primären ECC-Signale werden mit den erzeugten ECC-Signalen verglichen, um zu verifizieren, ob die auf dem Datenbus 85 durch die Speichersteuerung 70 gesendeten Daten dieselben wie die Daten sind, die in den DRAMs der Speichermatrix 600 gespeichert sind.
- Während eines Speicherlesezyklus werden die aus der ausgewählten Bank von DRAMs gelesenen Daten dem ECC-Generator präsentiert. Die erzeugten ECC- Signale werden dann zu den ECC-Komparatoren geliefert, die auch gespeicherte ECC-Signale empfangen, die aus der ausgewählten Bank von DRAMs gelesen werden. Die erzeugten und gespeicherten ECC-Signale werden durch die ECC- Komparatoren 625 verglichen.
- Wenn es einen Fehivergleich zwischen irgendeinem der Paare von ECC-Signalen gibt, die durch die ECC-komparatoren 625 überwacht werden, erzeugen die ECC- Komparatoren ein geeignetes Fehlersignal. Wie es in Fig. 6 gezeigt ist, können Primär/Spiegel-ECC-Fehler-, primäre/erzeugte ECC-Fehler- und gespeicherte/erzeugte ECC-Fehlersignale durch die ECC-Komparatoren ausgegeben werden.
- Diese ECC-Fehlersignale von den ECC-Komparatoren 625 werden zu Statusregistern 618 geliefert. In den Statusregistern werden alle ECC-Fehlersignale und alle Adressen-, Steuer-, Zeitgabe-, Daten- und ECC-Signale, die für einen ECC-Ausfall relevant sind, zeitweilig gespeichert, um eine Fehlerdiagnose und -behebung zu ermöglichen.
- Ein ECC-Fehlersignal wird durch die ECC-Komparatoren 625 auf einer ECC- Fehlerleitung aktiviert und zum CPU-Modul 30 gesendet, um die Erfassung eines ECC-Fehlers aufgrund eines Fehlvergleichs anzuzeigen. Der Fehlvergleich kann während entweder der zwei während eines Speicherschreibzyklus durchgeführten ECC-Prüfungen oder während der während eines Speicherlesezyklus durchgeführten einzelnen ECC-Prüfung auftreten.
- Wie es in Fig. 6 gezeigt ist, empfängt eine Kartenauswahllogik 627 Schlitzsignale von einer Speicherrückwandleiterplatte. Die Schlitzsignale bestimmen eine eindeutige Schlitzstelle für jedes Speichermodul 60. Die Kartenauswahllogik 627 vergleicht dann die Schlitzsignale mit den bestimmten primären Kartenadressensignalen, die von einer der Speichersteuerungen über die Bestimmungsschaltung 612 gesendet werden. Ein Kartenauswahlsignal wird durch die Kartenauswahllogik 627 erzeugt, wenn die Schlitzsignale dieselben sind wie die bestimmten primären Kartenadressensignale, um dadurch die andere Schaltung in der Steuerlogik 610 freizugeben.
- Speichersteuerungen 70 und 75 steuern den Zugriff der jeweiligen CPUs 40 und 50 auf das Speichermodul 60, Hilfsspeicherelemente, und führen beim bevorzugten Ausführungsbeispiel bestimmte Fehlerbearbeitungsoperationen durch. Die Hilfsspeicherelemente, die mit der Speichersteuerung 70 gekoppelt sind, enthalten einen System-ROM 43, einen EEPROM 44 und einen Hilfsregister-RAM 45. Der ROM 43 hält einen bestimmten Standardcode wie beispielsweise einen Diagnose-, einen Konsolentreiber- und einen Teil des Hochfahrcodes. Der EEPROM 44 wird zum Halten von Information verwendet, wie beispielsweise einer Fehlerinformation, die während der Operation der CPU 40 erfaßt wird, für die es nötig sein kann, daß sie modifiziert wird, die aber bei einem Abschalten der Leistung nicht verloren werden sollte. Der Hilfsregister-RAM 45 wird für bestimmte Operationen verwendet, die durch die CPU 40 durchgeführt werden, und zum Umwandeln einer Schieneneindeutigkeitsinformation (z.B. einer Information, die für Bedingungen auf einer Schiene spezifisch ist, die nur für eine der CPUs 40 oder 50 verfügbar ist) in eine Zoneninformation (z.B. eine Information, auf die durch beide CPUs 40 und 50 zugegriffen werden kann).
- Äquivalente Elemente 53, 54 und 55 sind mit der Speichersteuerung 75 gekoppelt. Der System-ROM 53, der EEPROM 54 und der Hilfsregister-RAM 55 sind dieselben wie der System-ROM 43, der EEPROM 44 bzw. der Hilfsregister-RAM 45 und sie führen dieselben Funktionen durch.
- Die Details des bevorzugten Ausführungsbeispiels der primären Speichersteuerung 70 können in den Fig. 7-9 gesehen werden. Die Spiegel-Speichersteuerung 75 hat dieselben Elemente, wie sie in den Fig. 7-9 gezeigt sind, die aber bezüglich der Operation etwas anders sind. Daher wird nur die Operation der primären Speichersteuerung 70 beschrieben, außer dort, wo die Operation der Speichersteuerung 75 unterschiedlich ist. die Speichersteuerungen 70' und 75' im Verarbeitungssystem 20' haben dieselben Elemente und arbeiten genauso wie die Speichersteuerungen 70 bzw. 75.
- Die in Fig. 7 gezeigten Elemente steuern den Fluß von Daten, Adressen und Signalen durch die primäre Speichersteuerung 70. Eine Steuerlogik 700 steuert den Zustand der verschiedenen Elemente in Fig. 7 gemäß den Signalen, die durch die Speichersteuerung 70 empfangen werden, und der Zustandsmaschine jener Speichersteuerung, die in der Steuerlogik 700 gespeichert ist. Ein Multiplexer 702 wählt Adressen aus einer der drei Quellen aus. Die Adressen können entweder von der CPU 30 über einen Empfänger 705, von der DMA-Maschine 800, die unten unter Bezugnahme auf Fig. 8 beschrieben ist, oder von einer Auffrisch- Neusynchronisierungsadressenleitung kommen, die zum Erzeugen einer künstlichen Auffrischung während bestimmter Massenspeicherübertragungen von einer Zone zu einer anderen während Operationen zur erneuten Synchronisierung verwendet wird.
- Die Ausgabe des Multiplexers 702 ist eine Eingabe zu einem Multiplexer 710, wenn es Daten, die von der CPU 30 über den Empfänger 705 empfangen werden, und Daten von der DMA-Maschine 800 gibt. Der Ausgang des Multiplexers 710 liefert Daten über einen Speicheranschluß 85 und einen Treiber 715 zum Speichermodul 60. Der Treiber 715 ist für die Spiegel-Speichersteuermodule 75 und 75' gesperrt, weil nur eine Gruppe von Speicherdaten zu den Speichermodulen 60 bzw. 60' gesendet wird.
- Die zu einem Speicheranschluß 85 gesendeten Daten enthalten entweder in dem Speichermodul 60 zu speichernde Daten von der CPU 30 oder der DMA-Maschine 800. Daten von der CPU 30 und Adressen vom Multiplexer 702 werden auch über diesen Pfad und auch über einen Empfänger 745 und eine ECC-Korrektureinheit 750 zur DMA-Maschine 800 gesendet.
- Die Adressen vom Multiplexer 702 liefern auch eine Eingabe zu einem Demultiplexer 720, der die Adressen in einen Zeilen-/Spaltenadressenteil, einen Karten-/Bankadressenteil und ein Einzelkartenbit teilt. Die zweiundzwanzig Bits der Zeilen-/Spaltenadresse werden auf elf Leitungen multiplext. Beim bevorzugten Ausführungsbeispiel werden die zweiundzwanzig Zeilen-/Spaltenadressenbits über Treiber 721 zum Speichermodul 60 gesendet. Das Einzelkartenbit wird vorzugsweise über einen Treiber 722 zum Speichermodul 60 gesendet, und die anderen Karten-/Bankadressenbits werden mit ECC-Signalen multiplext.
- Der Multiplexer 725 kombiniert einen normalen Auffrischbefehl für die Speichersteuerung 70 zusammen mit einer Zyklustypinformation von der CPU 30 (d.h. Lesen, Schreiben, etc.) und einer DMA-Zyklustypinformation. Der normale Auffrischbefehl und die Auffrisch-Neusynchronisierungsadresse veranlassen beide, daß das Speichermodul 60 eine Speicherauffrischoperation initiiert.
- Die Ausgabe des Multiplexers 725 ist zusammen mit der Karten-/Bankadresse vom Demultiplexer 720 eine Eingabe zum Multiplexer 730. Eine weitere Eingabe in den Multiplexer 730 ist die Ausgabe einer ECC-Generator-/Prüfeinheit 735. Der Multiplexer 730 wählt eine der Eingaben aus und ordnet sie auf den Zeitmultiplex- Ecc4adressenleitungen zum Speichermodul 60 an. Der Multiplexer 730 läßt zu, daß jene Zeitmultiplexleitungen eine Karten-/Bankadresse und eine zusätzliche Steuerinformation sowie eine ECC-Information tragen, wenn auch zu unterschiedlichen Zeiten.
- Eine ECC-Information wird von den Speichermodulen 60 über einen Empfänger 734 empfangen und wird als eine Eingabe zur ECC-Generator-/Prüfeinheit 735 geliefert, um den ECC, der durch das Speichermodul 60 erzeugt wird, mit jenem zu vergleichen, der durch die Speichersteuerung 70 erzeugt wird.
- Eine weitere Eingabe in die ECC-Generator-/Prüfeinheit 735 ist die Ausgabe eines Multiplexers 740. In Abhängigkeit davon, ob die Speichertransaktion eine Schreibtransaktion oder eine Lesetransaktion ist, empfängt der Multiplexer 740 als Eingaben die vom Multiplexer 710 zum Speichermodul 60 gesendeten Speicherdaten oder die über den Empfänger 745 vom Speichermodul 60 empfangenen Speicherdaten. Der Multiplexer 740 wählt eine dieser Gruppen von Speicherdaten als Eingabe zur ECC-Generator-/Prüfeinheit 735 aus. Die Generator-/Prüfeinheit 735 erzeugt dann den geeigneten ECC-Code, der zusätzlich dazu, daß er zum Multiplexer 730 gesendet wird, auch zu einer ECC-Korrektureinheit 750 gesendet wird. Beim bevorzugten Ausführungsbeispiel korrigiert die ECC-Korrektureinheit 750 irgendwelche Einzelbitfehler in den vom Speichermodul 60 empfangenen Speicherdaten.
- Die korrigierten Speicherdaten von der ECC-Prüfeinheit 750 werden dann zur DMA-Maschine gesendet, die in Fig. 8 gezeigt ist, wie auch zu einem Multiplexer 752. Die andere Eingabe in den Multiplexer 752 ist eine Fehlerinformation von der unten in Verbindung mit Fig. 9 beschriebenen Fehlerbearbeitungslogik. Die Ausgabe des Multiplexers 752 wird über einen Treiber 753 zur CPU 30 gesendet.
- Ein Komparator 755 vergleicht die vom Multiplexer 710 zum Speichermodul 60 gesendeten Daten mit einer Kopie jener Daten, nachdem sie durch den Treiber 715 und den Empfänger 745 gelaufen ist. Dieses Prüfen bestimmt, ob der Treiber 715 und der Empfänger 745 richtig arbeiten. Die Ausgabe des Komparators 755 ist ein CMP-Fehlersignal, das das Vorhandensein oder Nichtvorhandensein eines solchen Vergleichsfehlers anzeigt. Der CMP-Fehler wird in die Fehlerlogik in Fig. 9 geführt.
- Die anderen Elemente in Fig. 7 zeigen eine andere Art von Fehlererfassung. Ein Element 760 ist ein Paritätsgenerator. ECC-Daten, die entweder durch die Speichersteuerung 70 in bezug auf Daten erzeugt sind, die im Speichermodul 60 zu speichern sind, oder durch das Speichermodul 60 in bezug auf Daten erzeugt sind, die aus dem Speichermodul 60 gelesen sind, werden zu einem Paritätsgenerator 760 gesendet. Das Paritätssignal vom Generator 760 wird über einen Treiber 762 zu einem Komparator 765 gesendet. Der komparator 765 vergleicht das ECC- Paritätssignal vom Generator 760 mit einem äquivalenten ECC-Paritätssignal, das durch die Steuerung 75' erzeugt ist.
- Ein Paritätsgenerator 770 führt dieselbe Art Prüfung bezüglich der Zeilen-/Spaltenund Einzelbitkartenadressensignale durch, die vom Multiplexer 720 empfangen werden. Das Adressenparitätssignal vom Paritätsgenerator 770 wird durch einen Treiber 772 zu einem Komparator 775 gesendet, der auch ein Adressenparitätssignal von der Steuerung 75 empfängt. Die Ausgaben der Komparatoren 765 und 775 sind Paritätsfehlersignale, die in die Fehlerlogik in Fig. 9 geführt werden.
- Fig. 8 zeigt die Grundzüge einer DMA-Maschine 800. Beim bevorzugten Ausführungsbeispiel ist die DMA-Maschine 800 in der Speichersteuerung 70 angeordnet, aber es gibt keine Notwendigkeit für eine solche Anordnung. Wie es in Fig. 8 gezeigt ist, enthält die DMA-Maschine 800 einen Datenführer 810, eine DMA- Steuerung 820 und DMA-Register 830. Ein Treiber 815 und ein Empfänger 816 bilden eine Schnittstelle zwischen der Speichersteuerung 70 und einer Kreuzungsstelle 90.
- Die DMA-Steuerung 820 empfängt interne Steuersignale von der Steuerlogik 700 und sendet in Antwort darauf Steuersignale, um den Datenführer 810 in die geeignete Konfiguration zu versetzen. Die Steuerung 820 veranlaßt den Datenführer 810 auch, seine Konfiguration auf ein Führen von Daten und Steuersignalen von der Kreuzungsstelle 90 zur Speichersteuerschaltung 70, die in Fig. 7 gezeigt ist, einzustellen. Der Datenführer 810 sendet seine Statussignale zur DMA-Steuerung 820, die solche Signale zusammen mit anderer DMA-Information zur Fehlerlogik in Fig. 9 weiterleitet
- Die Register 830 enthalten ein DMA-Bytezählerregister 832 und ein DMA- Adressenregister 836. Diese Register werden durch die CPU 40 über den Führer 810 auf Anfangswerte eingestellt. Dann veranlaßt die Steuerung 820 während DMA-Zyklen über den Führer 810, daß das Zählerregister 832 inkrementiert wird und daß das Adressenregister 836 dekrementiert wird. Die Steuerung 820 veranlaßt auch, daß die Inhalte der Adressenregister 836 über den Führer 810 und die Schaltung in Fig. 7 während DMA-Operationen zum Speichermodul 60 gesendet werden.
- Wie es oben erklärt ist, führen beim bevorzugten Ausführungsbeispiel dieser Erfindung die Speichersteuerungen 70, 75, 70' und 75' auch bestimmte grundsätzliche Fehleroperationen durch. Ein Beispiel des bevorzugten Ausführungsbeispiels der Hardware zum Durchführen solcher Fehleroperationen ist in Fig. 9 gezeigt.
- Wie es in Fig. 9 gezeigt ist, werden bestimmte interne Speichersteuersignale, wie beispielsweise eine Auszeit, ein ECC-Fehler und ein Bus-Fehlvergleich in die Diagnose-Fehlerlogik 870 eingegeben, wie es auch bestimmte externe Signale, wie beispielsweise ein Schienenfehler, ein Firewall-Fehlvergleich und ein Adressen-/Steuerfehler werden. Beim bevorzugten Ausführungsbeispiel empfängt die Diagnose-Fehlerlogik 870 Fehlersignale von anderen Bauteilen des Systems 10 über Kreuzungsstellen 90 und 95.
- Die Diagnose-Fehlerlogik 870 bildet Fehlerimpulse aus den Fehlersignalen und aus einem Steuerimpulssignal, das aus der Grundzeitgabe der Speichersteuerung 70 erzeugt wird. Die durch die Diagnose-Fehlerlogik 870 erzeugten Fehlerimpulse erhalten eine bestimmte Fehlerinformation, die in geeignete Stellen in einem Diagnose-Fehlerregister 880 gemäß bestimmten Zeitgabesignalen gespeichert wird. Ein Systemausfall-Fehleradressenregister 865 speichert die Adresse im Speichermodul 70, mit dem die CPUs 40 und 50 beim Auftreten eines Fehlers kommunizierten.
- Die Fehlerimpulse von der Diagnose-Fehlerlogik 870 werden auch zu einer Fehlerkategorisierungslogik 850 gesendet, die auch Information von der CPU 30 empfängt, die den Zyklustyp (z.B. Lesen, Schreiben, etc.) anzeigt. Aus jener Information und den Fehlerimpulsen bestimmt die Fehlerkategorisierungslogik 850 das Vorhandensein von CPU/IO-Fehlern, DMA-Fehlern oder von CPU/MEM-Ausfällen.
- Ein CPU/lO-Fehler ist ein Fehler bei einer Operation, die einem CPU/IO-Zyklus auf einem Bus 46 direkt zuteilbar ist, und kann durch Hardware behebbar sein, wie es unten bezogen auf Rücksetzungen erklärt ist. DMA-Fehler sind Fehler, die während eines DMA-Zyklus auftreten, und werden beim bevorzugten Ausführungsbeispiel hauptsächlich durch Software bearbeitet. CPU/MEM-Ausfälle sind Fehler, für die die richtige Operation der CPU oder die Inhalte des Speichers nicht garantiert werden können.
- Die Ausgaben von der Fehlerkategorisierungslogik 850 werden zu einem Codierer 855 gesendet, der einen spezifischen Fehlercode bildet. Dieser Fehlercode wird dann über ein UND-Gatter 856 zu Kreuzungsstellen 90 und 95 gesendet, wenn das Fehlersperrsignal nicht vorhanden ist.
- Nach einem Empfangen der Fehlercodes senden Kreuzungsstellen 90, 95, 90' und 95' ein Signal zum Auffordern zur nochmaligen Wiederholung zurück zu den Speichersteuerungen. Wie es in Fig. 9 gezeigt ist, empfängt ein Codierer 895 in der Speichersteuerung 70 das Signal zur Aufforderung zur nochmaligen Wiederholung zusammen mit einer Zyklustypinformation und den Fehlersignalen (die gemeinsam als Zyklusqualifizierer gezeigt sind). Der Codierer 895 erzeugt dann einen geeigneten Fehlercode zur Speicherung in einem Systemausfall-Fehlerregister 898. Das Systemausfall-Fehlerreggister 898 speichert nicht dieselbe Information wie das Diagnose-Fehlerregister 880. Ungleich dem Systemausfall-Fehlerreggister 898 enthält das Diagnose-Fehlerreggister 880 nur Information über eine eindeutige Schiene, wie beispielsweise einen Fehler bezüglich einer Eingabe von einer Kreuzungsstellenschiene, und Daten über eine Zoneneindeutigkeit, wie beispielsweise einen unkorrigierbaren ECC-Fehler im Speichermodul 60.
- Das Systemausfall-Fehlerreggister 898 enthält auch mehrere Bits, die zur Fehlerbearbeitung verwendet werden. Diese enthalten ein Bit NXM, das anzeigt, daß eine gewünschte Speicherstelle fehlt, ein Bit NXO, das anzeigt, daß eine gewünschte I/O-Stelle fehlt, ein Festfehlerbit und ein Übergangsbit. Die Übergangs- und Festbits zusammen zeigen die Fehlerebene an. Das Übergangsbit veranlaßt das Systemausfall-Fehleradressenregister 865 auch, einzufrieren.
- In Fig. 9 ist auch ein Speichersteuerungs-Statusregister 875 gezeigt, obwohl es technisch kein Teil der Fehlerlogik ist. Das Register 875 speichert eine bestimmte Statusinformation wie beispielsweise einen DMA-Verhältniscode in einem DMA- Verhältnisteil 877, einen Fehlersperrcode in einem Fehlersperrteil 878 und einen Spiegelbustreiberfreigabecode in einem Spiegelbustreiberfreigabeteil 876. Der DMA-Verhältniscode bestimmt den Anteil der Speicherbandbreite, die der DMA zugeordnet werden kann. Der Fehlersperrcode liefert ein Signal zum Sperren eines UND-Gatters 856 und somit den Fehlercode. Der Spiegelbustreiberfreigabecode liefert ein Signal zum Freigeben der Spiegelbustreiber für bestimmte Datentransaktionen.
- Daten für eine erneute Synchronisierung des Speichers, für DMA- und I/O- Operationen laufen durch Kreuzungsstellen 90 und 95. Allgemein sorgen die Kreuzungsstellen 90 und 95 für Kommunikationen zwischen dem CPU-Modul 30, dem CPU-Modul 30', den I/O-Modulen 100, 110, 120 und den I/O-Modulen 100', 110', 120' (siehe Fig. 1).
- Die Kreuzungsstellen 90 und 95 enthalten beide parallele Register 910 und serielle Register 920, wie es in Fig. 10 gezeigt ist. Beide Registerarten werden beim bevorzugten Ausführungsbeispiel dieser Erfindung für eine Zwischenprozessorkommunikation verwendet. Während einer normalen Operation werden die Verarbeitungssysteme 20 und 20' synchronisiert und Daten werden parallel zwischen den Verarbeitungssystemen 20 und 20' unter Verwendung paralleler Register 910 in den Kreuzungsstellen 90/95 bzw. 90'/95' ausgetauscht. Wenn die Verarbeitungssysteme 20 und 20' nicht synchronisiert sind, was während des Hochfahrens am ausgeprägtesten ist, werden Daten zwischen Kreuzungsstellen mittels serieller Register 920 ausgetauscht.
- Die Adressen der parallelen Register sind, gegensätzlich zum Speicherraum, im I/O-Raum. Ein Speicherraum bezieht sich auf Stellen im Speichermodul 60. Ein I/O-Raum bezieht sich auf Stellen, wie beispielsweise eine I/O und interne Systemregister, die nicht im Speichermodul 60 sind.
- innerhalb des I/O-Raums können Adressen entweder in einem Systemadressenraum oder einem Zonenadressenraum sein. Der Ausdruck "Systemadressenraum" bezieht sich auf Adressen, auf die im gesamten System 10 zugegriffen werden kann, und somit durch beide Verarbeitungssysteme 20 und 20'. Der Ausdruck "Zonenadressenraum" bezieht sich auf Adressen, auf die nur durch die Zone zugegriffen werden kann, die die bestimmte Kreuzungsstelle enthält.
- Die in Fig. 10 gezeigten parallelen Register enthalten ein Kommunikationsregister 906 und ein I/O-Rücksetzregister 908. Das Komunikationsregister 906 enthält eindeutige Daten, die zwischen Zonen auszutauschen sind. Solche Daten sind normalerweise eindeutig für eine Zone, wie beispielsweise ein softwaremäßiger Fehler eines Speichers (es ist fast außerhalb des Wahrscheinlichkeitsbereichs, daß die Speichermodule 60 und 60' unabhängig voneinander denselben Fehler zur selben Zeit erfahren).
- Weil die in das Register 906 zu speichernden Daten eindeutig sind, muß die Adresse des Kommunikationsregister 906 für ein Schreiben in einem Zonenadressenraum sein. Sonst könnten die Verarbeitungssysteme 20 und 20', weil sie im Synchronisiewngssicherungsschritt sind und dieselbe Befehlsfolge zu im wesentlichen derselben Zeit ausführen, Daten, die eindeutig für eine Zone sind, nicht nur in die Kommunikationsregister 906 in der Zone 11 speichern; sie müßten dieselben Daten in die Kommunikationsregister 906' (nicht gezeigt) in der Zone 11' speichern.
- Die Adresse des Kommunikationsregisters 906 zum Lesen ist jedoch im Systemadressenraum. Somit können während einer synchronen Operation beide Zonen gleichzeitig das Kommunikationsregister aus einer Zone lesen, und dann gleichzeitig das Kommunikationsregister aus der anderen Zone.
- Das I/O-Rücksetzregister 908 ist im Systemadressenraum. Das I/O- Rücksetzregister enthält ein Bit pro I/O-Modul, um anzuzeigen, ob das entsprechende Modul in einem Rücksetzzustand ist. Wenn ein I/O-Modul im Rücksetzzustand ist, ist es effektiv gesperrt.
- Die parallelen Register 910 enthalten auch andere Register, aber ein Verstehen jener anderen Register ist für ein Verstehen der vorliegenden Erfindung nicht nötig.
- Alle seriellen Kreuzungsstellenregister 920 sind im zonenspezifischen Raum, da sie entweder für eine asynchrone Kommunikation verwendet werden oder nur zonenspezifische Information enthalten. Der Zweck der seriellen Kreuzungsstellenregister und der seriellen Kreuzungsstellen besteht darin, den Prozessoren 20 und 20' selbst dann eine Kommunikation zu erlauben, wenn sie nicht in der Verriege- Iungsschritt-Synchronisierung laufen (d.h. mit phasenverriegelten Takten und denselben Speicherzuständen). Beim bevorzugten Ausführungsbeispiel gibt es mehrere serielle Register, aber sie müssen zum Verstehen dieser Erfindung nicht beschrieben werden.
- Ein Steuer- und Statusregister 912 ist ein serielles Register, das Status- und Steuerflags enthält. Eines der Flags ist ein OSR-Bit 913, das zum Hochfahren verwendet wird und anzeigt, ob das Verarbeitungssystem in der entsprechenden Zone schon seinen Hochfahrprozeß begonnen hat oder ob das Betriebssystem für jene Zone gegenwärtig läuft, entweder weil sein Hochfahrverfahren beendet ist oder weil es eine erneute Synchronisierung durchlaufen hat.
- Das Steuer- und Statusregister 912 enthält auch die Betriebsartenbits 914 zum Identifizieren der aktuellen Betriebsart der Kreuzungsstelle 90 und somit des Verarbeitungssystems 20. Vorzugsweise sind die Betriebsartenbits Neusynchronisierungs-Betriebsartenbits 915 und Kreuzungsstellen-Betriebsartenbits 916. Neusynchronisierungs-Betriebsartenbits 915 identifizieren die Kreuzungsstelle 90 diesbezüglich, ob sie in einer Neusynchronisierungs-Slavebetriebsart oder einer Neusynchronisierungs-Masterbetriebsart ist. Die Kreuzungsstellen-Betriebsartenbits 916 identifizieren eine Kreuzungsstelle 90 entweder in einer Kreuzungsstellen-Aus-, einer Duplex-, einer Kreuzungsstellen-Master- oder einer Kreuzungsstellen- Slavebetriebsart.
- Eine der Anwendungen für die seriellen Register ist eine Statusleseoperation, die zuläßt, daß die Kreuzungsstelle in einer Zone den Status der Kreuzungsstelle einer anderen Zone liest. Ein Setzen eines Status-Leseanfrageflags 918 in dem seriellen Steuer- und Statusregister 912 sendet eine Anfrage nach Statusinformation zur Kreuzungsstelle 90'. Auf einen Empfang dieser Nachricht hin sendet die Kreuzungsstelle 90' die Inhalte ihres seriellen Steuer- und Statusregisters 912' zurück zur Kreuzungsstelle 90.
- Fig. 11 zeigt einige der Elemente zum Führen von Steuer- und Statussignalen (die "Steuercodes" genannt werden) in der primären Kreuzungsstelle 90 und der Spiegel-Kreuzungsstelle 95. Beim bevorzugten Ausführungsbeispiel existieren entsprechende Kreuzungsstellenelemente in den Kreuzungsstellen 90' und 95'. Diese Codes werden zwischen den Speichersteuerungen 70 und 75 und den mit den Modulanschlüssen 130, 132, 130' und 132' gekoppelten I/O-Modulen gesendet.
- Fig. 12 zeigt die Elemente beim bevorzugten Ausführungsbeispiel der primären Kreuzungsstelle 90, die zum Führen von Daten und Adressensignalen verwendet werden. Entsprechende Kreuzungsstellenelemente existieren in den Kreuzungsstellen 95, 95' und 95'.
- In Fig. 11 sind, obwohl die Hardware identisch ist, die Elemente für sowohl die primäre Kreuzungsstelle 90 als auch die Spiegel-Kreuzungsstelle 95 im Verarbeitungssystem 20 gezeigt, weil sie eine wichtige Verbindung zwischen den Elementen sind. Die Schaltungselemente in der Spiegel-Kreuzungsstelle 95, die äquivalent zu den Elementen in der Primär-Kreuzungsstelle 90 sind, sind durch dieselben Bezugszeichen bezeichnet, außer daß in der Spiegel-Steuerung der Buchstabe "m" an die Bezugszeichen angehängt ist.
- Unter Bezugnahme auf die Fig. 11 und 12 sind die Elemente (Zwischen-)Speicher, Multiplexer, Treiber und Empfänger. Einige der (Zwischen-)Speicher, wie beispielsweise die (Zwischen-)Speicher 933 und 933m, handeln als Verzögerungselemente, um die richtige Zeitgabe durch die Kreuzungsstellen sicherzustellen und um dadurch die Synchronisierung beizubehalten. Wie es in Fig. 11 gezeigt ist, werden Steuercodes von der Speichersteuerung 70 über den Bus 88 zum (Zwischen-)Speicher 931 und dann zum (Zwischen-)Speichern 932 gesendet. Der Grund für ein derartiges (Zwischen-)Speichern besteht im Bereitstellen geeigneter Verzögerungen zum Sicherstellen, daß Daten von der Speichersteuerung 70 gleichzeitig mit Daten von der Speichersteuerung 70' durch die Kreuzungsstelle 90 laufen.
- Wenn Codes von der Speichersteuerung 70 über die Kreuzungsstelle 90' zum Verarbeitungssystem 20' zu senden sind, dann wird ein Treiber 937 freigegeben. Die Steuercodes von der Speichersteuerung 70 laufen auch durch den (Zwischen-)Speicher 933 und in einen Multiplexer CSMUXA 935. Wenn Steuercodes in der primären Kreuzungsstelle 90 von der Kreuzungsstelle 90' empfangen werden, dann verläuft ihr Weg durch einen Empfänger 936 in einen (Zwischen-)Speicher 938 und auch in den Multiplexer 935.
- Steuercodes zum Multiplexer 935 bestimmen die Quelle der Daten, die entweder die Speichersteuerung 70 oder die Speichersteuerung 70' ist, und ordnen jene Codes am Ausgang des Multiplexers 935 an. Jene Ausgabe wird wiederum zum Zwecke einer richtigen Verzögerung in einem (Zwischen-)Speicher 939 gespeichert, und ein Treiber 940 wird freigegeben, wenn die Codes zum Modulanschluß 130 zu senden sind.
- Der Pfad für Daten- und Adressensignale, wie er in Fig. 12 gezeigt ist, ist in gewisser Hinsicht gleich dem Pfad der Steuersignale, die in Fig. 11 gezeigt sind. Die Unterschiede zeigen die Tatsache, daß während einer Transaktion Daten und Adressen nur in einer Richtung durch die Kreuzungsstelle 90 und 95 fließen, aber Steuersignale während jener Transaktion in beiden Richtung fließen können. Aus demselben Grund sind die Datenleitungen in den Bussen 88 und 89 bidirektional, aber nicht die Steuercodes.
- Daten und Adressen von der Speichersteuerung 70 gelangen über den Bus 88 in einen (Zwischen-)Speicher 961, dann in einen (Zwischen-)Speicher 962 und dann in einen (Zwischen-)Speicher 964. Wie in Fig. 11 stellen die (Zwischen-)Speicher in Fig. 12 eine richtige Zeitgabe zum Aufrechterhalten einer Synchronisierung bereit. Daten von der Speichersteuerung 70' werden durch einen Empfänger 986 gepuffert, in einem (Zwischen-)Speicher 988 gespeichert und dann zum Eingang eines Multiplexers MUXA 966 geführt. Die Ausgabe des Multiplexers 966 wird im (Zwischen-)Speicher 968 gespeichert, und dann, wenn ein Treiber 969 freigegeben wird, wird sie zum Modulanschluß 130 gesendet.
- Der Pfad für Steuercodes, die zur Speichersteuerung 70 zu senden sind, ist in Fig. 11 gezeigt. Codes vom Modulanschluß 130 werden zuerst in einem (Zwischen-)Speicher 941 gespeichert und dann einem Multiplexer CSMUXC 942 präsentiert. Der Multiplexer 942 empfängt auch Steuercodes von den parallelen Kreuzungsstellenregistern 910 und wählt entweder die Codes des parallelen Registers oder die Codes vom (Zwischen-)Speicher 941 für ein Senden zum (Zwischen-)Speicher 943 aus. Wenn jene Steuercodes zur Kreuzungsstelle 90' zu senden sind, dann wird der Treiber 946 freigegeben. Steuercodes von der Kreuzungsstelle 90' (und somit von der Speichersteuerung 70') werden durch einen Empfänger 947 gepuffert, in einem (Zwischen-)Speicher 948 gespeichert und als eine Eingabe einem Multiplexer CSMUXD 945 präsentiert. CSMUXD 945 empfängt als Eingabe auch die Ausgabe des (Zwischen-)Speichers 944, der die Inhalte des (Zwischen-)Speichers 943 speichert.
- Der Multiplexer 945 wählt entweder die Codes vom Modulanschluß 130 oder von der Kreuzungsstelle 90' aus und präsentiert jene Signale als Eingabe zum Multiplexer CSMUXE 949. Der Multiplexer 949 empfängt als Eingaben auch einen Code von der Decodierlogik 970 (für Massenspeicherübertragungen, die während einer erneuten Synchronisierung auftreten), Codes von den seriellen Kreuzungsstellenregistern 920 oder einen vorbestimmten Fehlercode ERR. Der Multiplexer 949 wählt dann unter der geeigneten Steuerung eine jener Eingaben für eine Speicherung in einem (Zwischen-)Speicher 950 aus. Wenn jene Codes zur Speichersteuerung 70 zu senden sind, dann wird ein Treiber 951 aktiviert.
- Der Zweck des Fehlercodes ERR, der eine Eingabe in den Multiplexer 949 ist, besteht im Sicherstellen, daß ein Fehler in einer der Schienen nicht dazu führt, daß die CPUs in derselben Zone wie die Schienen eine unterschiedliche Information verarbeiten. Wenn dies geschehen würde, würde das CPU-Modul 30 einen Fehler erfassen, der eine drastische und vielleicht unnötige Bearbeitung verursachen würde. Um dies zu vermeiden, enthält die Kreuzungsstelle 90 ein EXKLUSIV-ODER- Gatter 960, das die Ausgaben der Multiplexer 945 und 945m vergleicht. Wenn sie sich unterscheiden, dann veranlaßt das Gatter 960 den Multiplexer 949, den ERR- Code auszuwählen. Das EXKLUSIV-ODER-Gatter 960m veranlaßt gleichermaßen, daß auch ein Multiplexer 949m einen ERR-Code auswählt. Dieser Code zeigt den Speichersteuerungen 70 und 75 an, daß es einen Fehler gegeben hat, vermeidet aber ein Verursachen eines CPU-Modulfehlers. Die einzelne Schienenschnittstelle zum Speichermodul 60 erreicht dasselbe Ergebnis für Daten und Adressen.
- Die in Fig. 12 gezeigte Daten- und Adressenabwicklung ist gleich der Abwicklung der Steuersignale in Fig. 11. Daten- und Adressen vom Modulanschluß 130 werden in einem (Zwischen-)Speicher 972 gespeichert und dann als Eingabe einem Multiplexer MUXB 974 zur Verfügung gestellt. Daten von den parallelen Registern 910 liefern eine andere Eingabe zum Multiplexer 974. Die Ausgabe des Multiplexers 974 ist eine Eingabe zum Multiplexer MUXC 976, der auch Daten und Adressen empfängt, die in einem (Zwischen-)Speicher 961 gespeichert sind und ursprünglich von der Speichersteuerung 70 gesendet wurden. Der Multiplexer 976 wählt dann eine der Eingaben zur Speicherung in einem (Zwischen-)Speicher 978 aus. Wenn die Daten und Adressen entweder vom Modulanschluß 130 oder von der Speichersteuerung 70 zur Kreuzungsstelle 90' zu senden sind, dann wird ein Treiber 984 freigegeben.
- Daten von der Kreuzungsstelle 90' werden durch einen Empfänger 986 gepuffert und in einem (Zwischen-)Speicher 988 gespeichert, der auch eine Eingabe zu einem Multiplexer MUXD 982 liefert. Die andere Eingabe des Multiplexers MUXD 982 ist die Ausgabe des (Zwischen-)Speichers 980, der Daten und Adressen vom (Zwischen-)Speicher 978 enthält. Der Multiplexer 982 wählt dann eine seiner Eingaben aus, die dann in einen (Zwischen-)Speicher 990 gespeichert wird. Wenn die Daten oder Adressen zur Speichersteuerung 70 zu senden sind, dann wird ein Treiber 992 aktiviert. Daten von seriellen Registern 920 werden über einen Treiber 994 zur Speichersteuerung 70 gesendet.
- Die Datenführung in der Kreuzungsstelle 90, und insbesondere die (Anmeldungs-)xonreol-Elemente in beiden Fig. 11 und 12 werden durch mehrere Signale gesteuert, die durch eine Decodierlogik 970, eine Decodierlogik 971, eine Decodierlogik 996 und eine Decodierlogik 998 erzeugt werden. Diese Logik liefert die Signale, die Multiplexer 935, 942, 945, 949, 966, 974, 976 und 982 steuern, um die richtige Eingangsquelle auszuwählen. Zusätzlich steuert die Decodierlogik auch Treiber 940, 946, 951, 969, 984, 992 und 994.
- Die meisten der Steuersignale werden durch die Decodierlogik 998 erzeugt, aber einige werden durch die Decodierlogik 970, 971, 970m, 971 m und 996 erzeugt. Die Decodierlogikeinheiten 998, 970 und 970m sind an Stellen angeschlossen, die sicherstellen, daß die Logik die Daten und Codes empfängt, die notwendig für eine Steuerung dafür ist, ob die Daten und Codes von ihrer eigenen Zone oder von einer anderen Zone empfangen werden.
- Der Zweck der Decodierlogikeinheiten 971, 971 m und 996 besteht im Sicherstellen, daß die Treiber 937, 937m und 984 in den geeigneten Zustand versetzt werden. Dieses "frühe Decodieren" stellt sicher, daß Datenadressen und -codes in allen Fällen zu den richtigen Kreuzungsstellen weitergeleitet werden. Ohne eine solche frühe Decodierlogik könnten die Kreuzungsstellen alle in einem Zustand sein, in dem ihre Treiber gesperrt sind. Wenn auch eine der Speichersteuerungen gesperrt wäre, dann würden ihre Kreuzungsstellen nie Adressen, Daten und Steuercodes empfangen, was effektiv alle I/O-Module sperrt, die an jene Kreuzungsstellen angeschlossen sind.
- Vor einem Beschreiben der Treibersteuersignale, die durch die Decodierlogikeinheiten 970, 971, 970m, 971 m und 998 erzeugt werden, ist es zum Verstehen der unterschiedlichen Betriebsarten nötig, daß diese Zonen, und daher die Kreuzungsstellen 90 und 95, eingeschaltet sein können. Fig. 13 enthält ein Diagramm der unterschiedlichen Zustände A-F und eine Tabelle, die die Zustände erklärt, die jeder Betriebsart entsprechen.
- Beim Starten und in anderen Fällen sind beide Zonen in einem Zustand A, der für beide Zonen als AUS-Betriebsart bekannt ist. In jener Betriebsart arbeiten die Computersysteme in beiden Zonen unabhängig. Nach einem Fragen der Zonen eines durch der Betriebssysteme nach der Möglichkeit, mit der I/O der anderen Zone zu kommunizieren, und einem Bestätigen jener Anfrage, treten die Zonen in die Master/Slave-Betriebsart ein, die als Zustände B und C gezeigt ist. In solchen Betriebsarten hat die Zone, die der Master ist, eine arbeitende CPU und hat die Steuerung über die I/O-Module ihrer Zone und der anderen Zone inne.
- Auf ein Initiieren einer erneuten Synchronisierung hin verläßt das Computersystem die Master/Slave-Betriebsarten, nämlich einen der Zustände B oder C, und tritt in eine Neusynchronisierungs-Slave/Neusynchronisierungs-Master-Betriebsart ein, die als Zustände E und F gezeigt ist. In jenen Betriebsarten ist die Zone, die die Masterzone war, dafür verantwortlich, die CPU der anderen Zone auf die Leitung zu bringen. Wenn die erneute Synchronisierung fehlschlägt, kehren die Zonen zu derselben Master/Slave-Betriebsart zurück, in der sie vor dem Versuch einer erneuten Synchronisierung waren.
- Wenn die erneute Synchronisierung jedoch erfolgreich ist, dann treten die Zonen in einen Zustand D ein, der die Vollduplex-Betriebsart ist. In dieser Betriebsart arbeiten weite Zonen in einer Verriegelungsschritt-Synchronisierung zusammen. Eine Operation in dieser Betriebsart dauert an, bis es einen CPU/MEM-Fehler gibt, in welchem Fall das System in eine der zwei Master4slave-Betriebsarten eintritt. Der Slave ist die Zone, deren Prozessor den CPU/MEM-Fehler erfuhr.
- Beim Arbeiten im Zustand D, nämlich in der Vollduplex-Betriebsart, benötigen bestimmte Fehler, von denen Taktphasenfehler am bemerkenswertesten sind, ein Aufteilen des Systems in zwei unabhängige Verarbeitungssysteme. Dies führt dazu, daß das System 10 in den Zustand A zurückkehrt
- Die Decodierlogikeinheiten 970, 970m, 971, 971 und 998 (die gemeinsam Kreuzungsstellen-Steuerlogik genannt werden), die in den Fig. 11 und 12 gezeigt sind, haben einen Zugriff auf die Neusynchronisierungs-Betriebsartenbits 915 und die Kreuzungsstellen-Betriebsartenbits 916, die in den Fig. 10 gezeigt sind, um zu bestimmen, wie die Kreuzungsstellentreiber und -multiplexer in die geeigneten Zustände zu versetzen sind. Zusätzlich empfängt und analysiert die Kreuzungsstel- len-Decodierlogik auch einen Teil einer Adresse, die während Datentransaktionen von den Speichersteuerungen 70 und 75 gesendet wird, um eine Adressierungsinformation zu extrahieren, die der Kreuzungsstellen-Decodierlogik weiterhin anzeigt, wie der Zustand der Kreuzungsstellenmultiplexer und -treiber einzustellen ist. Die zum Einstellen der Zustände der Multiplexer benötigte Information ist recht einfach, wenn die unterschiedlichen Betriebsarten und Transaktionen einmal verstanden sind. Die einzige Bestimmung, die durchzuführen ist, betrifft die Datenquelle. Somit wählen dann, wenn die Kreuzungsstellen 90 und 95 in der Slave- Betriebsart sind, die Multiplexer 935, 935m und 966 Datenadressen und Codes aus einer Zone 11' aus. Jene Multiplexer wählen auch Daten, Adressen und Codes aus der anderen Zone aus, wenn die Kreuzungsstellen 90 und 95 in der Vollduplex- Betriebsart sind, die Adresse eines I/O-Befehls für eine an ein I/O-Modul in der Zone 11 angeschlossene Vorrichtung ist und die Kreuzungsstelle mit dem beeinflußten Multiplexer in einer Übergangsbetriebsart ist. In einer Übergangsbetriebsart sind an den Modulanschluß zu sendende Daten von der anderen Zone für eine Überprüfung zu empfangen. Beim bevorzugten Ausführungsbeispiel würde der Modulanschluß 130 Daten, Adressen und Codes von der primären Schiene in der Zone 11 empfangen, und der Modulanschluß 130' würde Daten, Adressen und Codes von der Spiegelschiene in der Zone 11' empfangen. Alternativ dazu könnte ein Modulanschluß 132 Daten, Adressen und Codes von der primären Schiene in der Zone 11' empfangen, was zulassen würde, daß die primäre Schiene einer Zone mit der Spiegelschiene der anderen Zone verglichen wird.
- Die Multiplexer 945, 945m und 982 werden derart eingestellt, daß sie Daten, Adressen und Codes annehmen, aus welcher Zone auch immer die Datenquelle ist. Dies ist sowohl dann wahr, wenn alle Kreuzungsstellen in der Vollduplex- Betriebsart sind und die Daten, Adressen und Codes von I/O-Modulen empfangen werden, als auch dann, wenn die Kreuzungsstelle in einer Neusynchronisierungs- Slavebetriebsart ist und die Daten, die Adresse und die Codes von den Speichersteuerungen der anderen Zone empfangen werden.
- Wenn die Adressierinformation von den Speichersteuerungen 70 und 75 anzeigt, daß die Quelle von Antwortdaten und -codes die parallelen Register 910 in der Kreuzungsstelle sind, dann werden die Multiplexer 942, 942m und 974 dazu eingestellt, Daten und Codes aus jenen Registern auszuwählen. Gleichermaßen werden dann, wenn die Adressierinformation von den Speichersteuerungen 70 und 75 anzeigt, daß die Quelle von Antwortdaten das serielle Register 920 einer Kreuzungsstelle ist, die Multiplexer 949 und 949m dazu eingestellt, Daten und Codes aus jenen Registern auszuwählen.
- Die Multiplexer 949 und 949m werden auch dazu eingestellt, Daten von der Decodierlogik 970 bzw. 970m auszuwählen, wenn die Information ein Steuercode während Speicher-Neusynchronisierungsoperationen ist, und den ERR-Code auszuwählen, wenn die EXKLUSIV-ODER-Gatter 960 und 960m einen Fehlvergleich zwischen den Daten identifizieren, die über die Kreuzungsstellen 90 und 95 gesendet werden. In diesem letzteren Fall wird die Steuerung der Multiplexer 949 und 949m eher von den EXKLUSIV-ODER-Gattern 960 und 960m als von der Kreuzungsstellen-Steuerlogik erzeugt. Die Multiplexer 949 und 949m wählen auch Codes aus seriellen Kreuzungsstellenregistern 910 aus, wenn Anfragen an jene Register erfolgen, oder die Ausgabe der Multiplexer 945 und 945m, wenn nach jenen Codes gefragt wird. Die Multiplexer 945 und 945m wählen entweder die Ausgaben von den Multiplexern 942 bzw. 942m oder I/O-Codes von den Kreuzungsstellen 90' bzw. 95' aus.
- Ein Multiplexer 976 wählt entweder Daten und Adressen vom Modulanschluß 130 im Fall einer Transaktion zu einem I/O-Modul aus, oder Daten und Adressen von der Speichersteuerung 90, wenn die Daten und Adressen zur Kreuzungsstelle 90' zu senden sind, und zwar entweder für eine I/O oder während einer Speicher- Neusynchronisierung.
- Die Treiber 937 und 937m werden aktiviert, wenn die Kreuzungsstellen 90 und 95 in einer Duplex-, einer Master- oder einer Neusynchronisierungs-Masterbetriebsart sind. Die Treiber 940 und 940m werden für I/O-Transaktionen in der Zone 11 aktiviert. Die Treiber 946 und 946m werden aktiviert, wenn die Kreuzungsstellen 90 und 95 in der Duplex- oder der Slave-Betriebsart sind. Die Treiber 951 und 951 m sind immer aktiviert.
- Der Treiber 969 wird während eines I/O-Schreibens zur Zone 11 aktiviert. Der Treiber 984 wird aktiviert, wenn die Kreuzungsstelle 90 Daten und Adressen zur I/O in der Zone 11' sendet, oder dann, wenn die Kreuzungsstelle 90 in der Neusynchronisierungs-Masterbetriebsart ist. Ein Empfänger 986 empfängt Daten von der Kreuzungsstelle 90'. Die Treiber 992 und 994 werden aktiviert, wenn Daten zur Speichersteuerung 70 gesendet werden; der Treiber 994 wird aktiviert, wenn die Inhalte des seriellen Kreuzungsstellenregisters 910 gelesen werden, und der Treiber 992 wird während aller anderen Auslesungen aktiviert.
- Wenn beide Verarbeitungssysteme 20 und 20' jeweils dieselben Funktionen in der Vollduplex-Betriebsart durchführen, ist es unbedingt nötig, daß die CPU-Module 30 und 30' Operationen mit derselben Geschwindigkeit durchführen. Sonst wird in den Neusynchronisiemngs-Verarbeitungssystemen 20 und 20' sehr viel an Verarbeitungszeit für eine I/O und eine Zwischenprozessor-Fehlerprüfung verbraucht. Beim bevorzugten Ausführungsbeispiel der Verarbeitungssysteme 20 und 20' sind ihre Grundtaktsignale miteinander synchronisiert und phasengeregelt. Das fehlertolerante Computersystem 10 enthält ein Zeitgabesystem zum Steuern der Häufigkeit der Taktsignale zu den Verarbeitungssystemen 20 und 20' und zum Minimieren der Phasendifferenz zwischen den Taktsignalen für jedes Verarbeitungssystem.
- Fig. 14 zeigt ein Blockdiagramm des in den Verarbeitungssystemen 20 und 20' enthaltenen Zeitgabesystems dieser Erfindung. Das Zeitgabesystem weit ein Oszillatorsystem 200 im CPU-Modul 30 des Verarbeitungssystems 20 auf, und ein Oszillatorsystem 200' im CPU-Modul 30' des Verarbeitungssystems 20'. Die Elemente des Oszillators 200' sind äquivalent zu jenen für den Oszillator 200 und eine Operation der beiden Oszillatorsysteme ist gleich. Somit werden nur die Elemente und die Operation des Oszillatorsystems 200 beschrieben, außer wenn sich die Operationen der Oszillatorsysteme 200 und 200' unterscheiden.
- Wie es Fig. 14 zeigt, liegt ein Großteil des Oszillatorsystems 200, insbesondere die digitale Logik, innerhalb einer Kreuzungsstelle 95, aber diese Anordnung ist für die vorliegende Erfindung nicht unbedingt nötigt. Das Oszillatorsystem 200 enthält einen spannungsgesteuerten Kristalloszillator (VCXO) 205, der ein Grundoszillatorsignal erzeugt, und zwar bevorzugt bei 66,66 MHz Die Frequenz des VCXO 205 kann durch den Spannungspegel am Eingang eingestellt werden.
- Ein Taktaufteilungschip 210 teilt das Grundoszillatorsignal nach unten und erzeugt vorzugsweise vier Primärtakte, die alle dieselbe Frequenz haben. Für die primäre CPU 40 sind die Takte PCLK L und PCLK H, die logische Inverse zueinander sind. Für die Spiegel-CPU 50 erzeugt das Taktaufteilungschip 210 Taktsignale MCLK L und MCLK H, die auch logische Inverse zueinander sind. Die Zeitgabe und die Phasenbeziehung dieser Taktsignale sind in Fig. 15 gezeigt. Vorzugsweise beträgt die Frequenz der Taktsignale PCLK L, PCLK H, MCLK L und MCLK H etwa 33,33 MHz Der Taktchip 210 erzeugt auch ein phasenverriegeltes Schleifensignal CLKC H bei 16,66 MHz, was auch in Fig. 15 gezeigt ist. Dieses Phasenverriegelungsschleifensignal wird zu einer Steuerlogik 220 gesendet, die jenes Signal puffert.
- Ein Taktlogikpuffer 220 sendet das Signal CLKC H zum Oszillator 200' zur Verwendung bei einer Synchonisierung. Der Taktlogikpuffer 220' im Oszillator 200' sendet sein eigenes gepuffertes Phasenverriegelungsschleifensignal CLKC' H zu einem Phasendetektor 230 im Oszillator 200. Der Phasendetektor 230 empfängt auch das gepufferte Phasenverriegelungsschleifensignal CLKC H von der Taktlogik 220 über ein Verzögerungselement 225. Das Verzögerungselement 225 führt eine Annäherung an die Verzögerung aufgrund des Kabelverlaufs vom Taktlogikpuffer 220' durch.
- Der Phasendetektor 230 vergleicht seine Eingangs- Phasenverriegelungsschleifensignale und erzeugt zwei Ausgaben. Eine ist ein Phasendifferenzsignal 235, das über einen Schleifenverstärker 240 zum Spannungseingang des VCXO 205 gesendet wird. Das Phasendifferenzsignal 235 veranlaßt den Verstärker 240, ein Signal zu erzeugen, um die Frequenz des VCXO 205 zu ändern, um Phasendifferenzen zu kompensieren.
- Die andere Ausgabe des Phasendetektors 230 ist ein Phasenfehlersignal 236, das mögliche Synchronfehler anzeigt.
- Fig. 16 ist ein detailliertes Diagramm des Phasendetektors 230. Der Phasendetektor 230 enthält einen Phasenkomparator 232 und einen Spannungskomparator 234. Der Phasenkomparator 232 empfängt das Taktsignal von dem Verzögerungselement 225 (CLKC) und das Phasenverriegelungsschleifentaktsignal vom Oszillator 200' (CLKC' H), und erzeugt ein Phasendifferenzsignal 235 als Spannungspegel, der die Phasendifferenz jener Signale darstellt.
- Wenn das Verarbeitungssystem 20 zum Zwecke der Taktsynchronisierung der "Slave" wäre, wäre ein Schalter 245 in der "SLAVE"-Position (d.h. geschlossen) und der Spannungspegel 235 würde, nachdem er durch den Schleifenverstärker 240 verstärkt worden wäre, die Frequenz des VCXO 205 steuern. Wenn beide Schalter 245 und 245' in der "Master"-Position wären, würden die Verarbeitungssysteme 20 und 20' nicht phasenverriegelt sein und würden asynchron (unabhängig) laufen.
- Der Spannungspegel des Phasendifferenzsignals 235 ist auch eine Eingabe zum Spannungskomparator 234 als zwei Referenzspannungen Vref1 und Vref2, die akzeptierbare Bereiche für einen Phasenvorlauf und einen Phasennachlauf darstellen. Wenn die Phasendifferenz innerhalb einer Toleranzzone ist, wird kein Phasenfehlersignal aktiviert. Wenn die Phasendifferenz außerhalb der Toleranzzone ist, dann wird das Phasenfehlersignal 236 aktiviert und über einen Taktdecodierer 220 zur Kreuzungsstelle 95 gesendet.
- Fig. 17 zeigt ein bevorzugtes Ausführungsbeispiel eines I/O-Moduls 100. Die Prinzipien der Operation des I/O-Moduls 100 sind genausogut auf andere I/O-Module anwendbar.
- Fig. 18 zeigt die Elemente beim bevorzugten Ausführungsbeispiel einer Firewall (Brandmauer) 1000. Die Firewall 1000 enthält eine 16-Bit-Busschnittstelle 1810 zum Modulanschluß 130 und eine 32-Bit-Busschnittstelle 1820 zur Verbindung mit einem Bus 1020, der in Fig. 17 gezeigt ist. Die Schnittstellen 1810 und 1820 sind durch einen internen Firewallbus 1815 verbunden, der auch die anderen Elemente der Firewall 1000 verbindet. Vorzugsweise ist der Bus 1815 ein paralleler Bus mit einer Breite von entweder 16 oder 32 Bits.
- Das I/O-Modul 1000 ist mit dem CPU-Modul 30 mittels dualer Schienen- Modulanschlüsse 130 und 132 verbunden. Jeder der Modulanschlüsse wird von jeweiligen Firewalls 1000 und 1010 empfangen. Eine der Firewalls, die normalerweise, aber nicht immer, die Firewall 1000 ist, schreibt die Daten vom Modulanschluß 130 auf den Bus 1020. Die andere Firewall, in diesem Fall die Firewall 1010, prüft jene Daten gegenüber ihrer eigenen Kopie, die vom Modulanschluß 132 empfangen wird, unter Verwendung einer Firewall-Vergleichsschaltung 1840, die in Fig. 18 gezeigt ist. Jenes Prüfen ist aufgrund der Verriegelungsschritt- Synchronisierung der CPU-Module 30 und 30' effektiv, was dazu führt, daß Daten von den CPU-Modulen 30 und 30' zum I/O-Modul 100 geschrieben werden, damit sie an den Firewalls 1000 und 1010 im wesentlichen gleichzeitig verfügbar sind.
- Die Firewall-Vergleichsschaltung 1840 prüft nur Daten, die von den CPU-Modulen 30 und 30' empfangen werden. Daten, die von einer I/O-Vorrichtung zu den CPU- Modulen 30 und 30' gesendet werden, haben einen gemeinsamen Ursprung und müssen somit nicht überprüft werden. Statt dessen werden Daten, die von einer I/O-Vorrichtung empfangen werden, um zu den CPU-Modulen 30 und 30' gesendet zu werden, durch einen Fehlererfassungscode (EDC) geprüft, wie beispielsweise eine zyklische Redundanzüberprüfung (CRC), die durch einen EDC/CRC- Generator 1850 durchgeführt wird. Der EDC/CRC-Generator 1850 ist auch mit einem internen Firewallbus 1815 gekoppelt.
- Der EDC/CRC-Generator 1850 erzeugt und prüft denselben EDC/CRC-Code, der durch die I/O-Vorrichtung verwendet wird. Vorzugsweise erzeugt das I/O-Modul 100 zwei EDC. Einer, der auch ein EDC/CRC sein kann, wird für eine Schnittstelle zu einem Netzwerk verwendet, wie beispielsweise das Ethernet-Paketnetzwerk, mit dem das Modul 100 gekoppelt ist (siehe Element 1082 in Fig. 17). Der andere wird für eine Diskettenschnittstelle, wie beispielsweise die Diskettenschnittstelle 1072 in Fig. 17, verwendet.
- Zwischen dem CPU-Modul 30 und dem I/O-Modul 100 ist keine EDC/CRC- Versorgung erforderlich, weil die Modulanschlüsse doppelt vorhanden sind. Beispielsweise kommuniziert im CPU-Modul 30 die Kreuzungsstelle 90 mit der Firewall 1000 über den Modulanschluß 130, und die Kreuzungsstelle 95 kommuniziert mit der Firewall 1010 über den Modulanschluß 132.
- Eine vom Ethernet-Netzwerk 1082 empfangene Nachricht wird auf einen gültigen EDC/CRC durch eine Netzwerksteuemng 1080 geprüft, die in Fig. 17 gezeigt ist. Die Daten, vervollständigt mit EDC/CRC, werden zu einem lokalen RAM 1060 geschrieben, wie es auch in Fig. 17 gezeigt ist. Alle Daten im lokalen RAM 1060 wer den unter Verwendung einer DMA zum Speichermodul 60 übertragen. Eine DMA- Steuerung 1890 koordiniert die Übertragung und dirigiert bzw. steuert den EDC/CRC-Generator 1850, die Gültigkeit der EDC/CRC-codierten Daten zu prüfen, die übertragen werden.
- Die meisten Datenübertragungen bei einer I/O-Vorrichtung werden mit einer DMA durchgeführt. Daten werden zwischen einem Hauptspeicher und einem I/O- Pufferspeicher bewegt. Wenn Daten vom Hauptspeicher zu einem I/O- Pufferspeicher bewegt werden, kann ein EDC/CRC angehängt werden. Wenn die Daten vom I/O-Pufferspeicher zum Hauptspeicher bewegt werden, kann ein EDC/CRC geprüft werden und zum Hauptspeicher bewegt werden, oder er kann abgestreift werden. Wenn Daten vom I/O-Pufferspeicher über eine externe Vorrichtung bewegt werden, wie beispielsweise eine Diskette oder einen Ethernet- Adapter, kann der EDC/CRC lokal oder an einem entfernten Empfangsknoten geprüft werden, oder beides. Der EDC/CRC von Speicherdatenpaketen kann am entfernten Knoten oder durch die lokale Schnittstelle am I/O-Modul erzeugt worden sein.
- Diese Operation stellt sicher, daß Daten, die in einem Einzelschienensystem wie einem I/O-Modul 100 sind oder darüber übertragen werden, durch einen Fehlererfassungscode versorgt sind, der vorzugsweise wenigstens so zuverlässig wie die Kommunikationsmedien ist, welche die Daten möglicherweise durchlaufen. Unterschiedliche I/O-Module, wie beispielsweise jene, die synchrone Protokolle bearbeiten, haben vorzugsweise einen EDC/CRC-Generator, der die EDC/CRC-Codes der geeigneten Protokolle erzeugt und prüft.
- Im allgemeinen bearbeitet eine DMA-Steuerung 1890 den Teil einer DMA- Operation, der spezifisch für die geteilte Speichersteuerung 1050 und den gerade adressierten lokalen RAM 1060 spezifisch ist. Der 32-Bit-Bus 1020 wird in zwei verschiedenen Betriebsarten betrieben. Während eines DMA-Einstellens verwendet die DMA-Steuerung 1890 einen Bus 1020 als standard mäßigen asynchronen Mikroprozessor-Bus. Die Adresse im lokalen RAM 1060, wo die DMA-Operation auftritt, wird durch die geteilte Speichersteuerung 1050 und die DMA-Steuerung 1890 bereitgestellt. Während der aktuellen DMA-Übertragung dirigiert die DMA- Steuerung 1890 DMA-Steuerleitungen 1895 zum Betreiben eines Busses 1020 auf eine synchrone Art. Die geteilte Speichersteuerung 1050 überträgt ein 32-Bit- Datenwort mit dem Bus 1020 für jeden Buszyklus, und die DMA-Steuerung 1890 verfolgt, wieviele Worte zur Übertragung zurückgelassen sind. Die geteilte Speichersteuerung 1050 steuert auch den lokalen RAM 1060 und erzeugt die nächste DMA-Adresse.
- Die I/O-Module (100, 110, 120) sind verantwortlich für ein Steuern der Lese- /Schreiboperationen zu ihrem eigenen lokalen RAM 1060. Das CPU-Modul 30 ist verantwortlich für eine Steuerung der Übertragungsoperationen mit einer Speichermatrix 60. Die DMA-Maschine 800 der Speichersteuerungen 70 und 75 (die in Fig. 8 gezeigt sind) leitet die DMA-Operationen am CPU-Modul 30. Diese Arbeitsaufteilung verhindert, daß ein Fehler in der DMA-Logik an irgendeinem Modul die Datenintegrität an irgendeinem anderen Modul in den Zonen 11 oder 11' verschlechtert.
- Die Funktionen eines Ablaufverfolgungs-RAMs 1872 und einer Ablaufverfolgungs- RAM-Steuerung 1870 sind unten ausführlicher beschrieben. Kurz gesagt werden dann, wenn ein Fehler erfaßt wird und die CPUs 40, 40', 50 und 50' und die CPU- Module 30 und 30' benachrichtigt werden, verschiedene Ablaufverfolgungs-RAMs im gesamten Computersystem 10 dazu veranlaßt, bestimmte Funktionen durchzuführen, die unten beschrieben sind. Die Kommunikationen mit den Ablaufverfolgungs-RAMs finden über einen Ablaufverfolgungsbus 1095 statt. Die Ablaufverfolgungs-RAM-Steuerung 1870 veranlaßt den Ablaufverfolgungs-RAM 1872 in Antwort auf Signale vom Ablaufverfolgungsbus 1095 entweder ein Speichern anzuhalten oder seine Inhalte über den Ablaufverfolgungsbus 1095 auszugeben.
- Ein I/O-Modulbus 1020, der vorzugsweise ein 32-Bit-Parallel bus ist, koppelt mit den Firewalls 1000 und 1010 wie auch mit anderen Elementen des I/O-Moduls 100.
- Eine geteilte Speichersteuerung 1050 ist auch mit dem I/O-Bus 1020 im I/O-Modul 100 gekoppelt. Die geteilte Speichersteuerung 1050 ist mit einem lokalen Speicher 1060 durch einen geteilten Speicherbus 1065 gekoppelt, der vorzugsweise 32-Bit- Daten führt. Vorzugsweise ist der lokale Speicher 1060 ein RAM mit einem Speicher von 256 Kbytes, aber die Größe des RAM 1060 ist wählbar. Die geteilte Speichersteuerung 1050 und der lokale RAM 1060 stellen eine Speichermöglichkeit für das I/O-Modul 100 bereit.
- Eine Plattensteuerung 1070 schafft eine Standardschnittstelle zu einer Platte, wie beispielsweise zu den Platten 1075 und 1075' in Fig. 1. Die Plattensteuerung 1070 ist auch mit der geteilten Speichersteuerung 1050 gekoppelt, und zwar entweder zur Verwendung des lokalen RAMs 1060 oder für eine Kommunikation mit dem I/O- Modulbus 1020.
- Eine Netzwerksteuerung 1080 schafft mittels einer Netzwerkschnittstelle 1082 eine Schnittstelle für ein Standardnetzwerk, wie beispielsweise das ETHERNET- Netzwerk. Die Netzwerksteuerung 1080 ist auch mit der geteilten Speichersteuerung 1050 gekoppelt, die als Schnittstelle sowohl zum lokalen RAM 1060 als auch zum I/O-Modulbus 1020 wirkt. Es gibt jedoch kein Erfordernis für irgendeine besondere Organisation oder Struktur des I/O-Modulbusses 1020.
- Ein PCIM-(= Leistungs- und Kühlungs-Schnittstellenmodul)-Halteelement 1030 ist mit dem I/O-Modulbus 1020 und mit einer ASCII-Schnittstelle 1032 verbunden. Das PCIM-Halteelement 1030 erlaubt dem Verarbeitungssystem 20, den Status des Leistungssystems (d.h. der Batterien, der Regler, etc.) und des Kühlsystems (d.h. der Ventilatoren) zu überwachen, um ihre richtige Operation sicherzustellen. Vorzugsweise empfängt das PCIM-Halteelement 1030 nur Nachrichten, wenn es irgendeinen Fehler oder eine Anzeige für einen potentiellen Fehler gibt, wie beispielsweise eine nicht akzeptierbare niedrige Batterlespannung. Es ist auch möglich, das PCIM-Halteelement 1030 dazu zu verwenden, alle Leistungs- und Kühl- Untersysteme periodisch zu überwachen. Alternativ dazu kann das PCIM- Halteelement 1030 direkt mit den Firewalls 1000 und 1010 verbunden sein.
- Ein Diagnose-Mikroprozessor 1100 ist auch mit dem I/O-Modulbus 1020 verbunden. Allgemein wird der Diagnose-Mikroprozessor 1100 dazu verwendet, eine Fehlerüberprüfungsinformation von den Ablaufverfolgungs-RAMs, wie beispielsweise dem Ablaufverfolgungs-RAM 1872, zu sammeln, wenn Fehler erfaßt werden. Jene Daten werden in Ablaufverfolgungsbussen 1095 und 1096 über die Firewalls 1000 bzw. 1010 über den Modulbus 1020 und in den Mikroprozessor 1100 gesammelt.
- Die Elemente des Computersystems 10 bilden nicht aus sich selbst heraus ein fehlertolerantes System. Es muß einen Kommunikationspfad und ein Protokoll geben, welche eine Kommunikation während normaler Operationen und eine Operation während einer Fehlererfassung und -korrektur zulassen. Ein Schlüssel für eine derartige Kommunikation ist ein Kreuzungsstellenpfad 25. Der Kreuzungsstellenpfad 25 besteht aus den parallelen Verbindungen, seriellen Verbindungen und Taktsignalen, die schon beschrieben sind. Diese sind in Fig. 19 gezeigt. Die parallele Verbindung enthält zwei identische Gruppen von Daten- und Adressenleitungen, Steuerleitungen, Unterbrechungsleitungen, Codefehlerleitungen und eine Leitung zum Anfragen eines softwaremäßigen Rücksetzens Die Daten- und Adressenleitungen und die Steuerleitungen enthalten Information, die zwischen den CPU-Modulen auszutauschen ist, wie beispielsweise von den Modulanschlüssen 130 und 132 (oder 130' und 132') oder vom Speichermodul 60 (60').
- Die Unterbrechungsleitungen enthalten vorzugsweise eine Leitung für jeden der Unterbrechungspegel, die für ein I/O-Untersystem (Module 100, 110, 120, 100', 110' und 120') verfügbar sind. Diese Leitungen sind durch Kreuzungsstellen 90, 95, 90' und 95' geteilt.
- Die Codefehlerleitungen enthalten vorzugsweise Codes zum Synchronisieren einer Konsolen-"HALTE"-Anfrage für beide Zonen, und zwar einen zum Synchronisieren eines CPU-Fehlers für beide Zonen, einen zum Anzeigen des Auftretens eines CPU/Speicher-Ausfalls zur anderen Zone, einen zum Synchronisieren eines DMA- Fehlers für beide Zonen und einen zum Anzeigen eines Taktphasenfehlers. Die Fehlerleitungen von jeder Zone 11 oder 11' sind Eingänge zu einem ODER-Gatter, wie beispielsweise einem ODER-Gatter 1990 für die Zone 11 oder einem ODER- Gatter 1990' für eine Zone 11'. Der Ausgang an jedem ODER-Gatter liefert einen Eingabe zu den Kreuzungsstellen der anderen Zone.
- Das fehlertolerante Verarbeitungssystem 10 ist derart aufgebaut, daß es trotz Übergangsfehlern ein Arbeiten als Dualschienensystem fortführt. Das I/O- Untersystem (Module 100, 110, 120,100', 110', 120') können auch Übergangsfehler oder Ausfälle erfahren und ein Arbeiten fortführen. Beim bevorzugten Ausführungsbeispiel veranlaßt ein durch die Firewall-Vergleichsschaltung 1840 erfaßter Fehler, daß über den Pfad 25 für durch die CPU dirigierte Operationen ein Bericht über einen synchronisierten Fehler gemacht wird. Die Hardware in der CPU 30 und 30' veranlaßt ein synchronisiertes softwaremäßiges Rücksetzen über den Pfad 25 und versucht die fehlgeschlagene Operation erneut. Für durch die DMA dirigierten Operationen resultierte dieselbe Fehlererfassung in synchronen Unterbrechungen durch den Pfad 25, und die Software in den CPUs 40, 50, 40' und 50' beginnt die DMA-Operation erneut.
- Bestimmte Übergangsfehler sind nicht sofort derart behebbar, daß eine fortgeführte Operation auf eine synchronisierte Vollduplexweise zugelassen ist. Beispielsweise kann ein Steuerfehler im Speichermodul 60 in unbekannten Daten im Speichermodul 60 resultieren. In dieser Situation können die CPUs und die Speicherelemente nicht länger zuverlässig als Teil eines fehlertoleranten Systems funktionieren, so daß sie entfernt werden. Die Speichermatrix 60 muß sich dann einer Speicherneusynchronisierung unterziehen, bevor die CPUs und die Speicherelemente wieder mit dem System verbunden werden können. Der CPU/Speicher-Fehlercode der Codefehlerleitungen im Pfad 25 zeigt der CPU 30' an, daß die CPUs und die Speicherelemente der CPU 30 ausgefallen sind.
- Die Steuerleitungen, die eine Kombination von Zyklustyp-, Fehlertyp- und Fertig- Zuständen darstellen, sorgen für das Handshaking zwischen den CPU-Modulen (30 und 30') und den I/O-Modulen. Ein Zyklustyp definiert, wie es oben erklärt ist, den Typ der gerade durchgeführten Busoperation: ein CPU-I/O-Lesen, eine DMA- Übertragung, ein DMA-Einstellen bzw.-Setup oder eine Unterbrechungsvektoranfrage. Ein Fehlertyp definiert entweder einen Firewall-Fehlvergleich oder einen CRC-Fehler. "Fertig"-Nachrichten werden zwischen der CPU und den I/O-Modulen gesendet, um das Beenden angeforderter Operationen anzuzeigen.
- Die serielle Kreuzungsstelle enthält zwei Gruppen von zwei Leitungen, um für eine serielle Datenübertragung für ein Statuslesen, eine Schleifenrückführung und eine Datenübertragung zu sorgen.
- Die ausgetauschten Taktsignale sind die phasenverriegelten Taktsignale CLKC H und CLKC'H (verzögert).
- Die Fig. 20A-D zeigen Blockdiagramme der Elemente der CPU-Module 30 und 30' und der I/O-Module 100 und 100', durch die während der unterschiedlichen Operationen Daten laufen. Jedes jener Elemente ist jeweils zuvor beschrieben worden.
- Die Fig. 20A zeigt die Datenpfade für eine typische CPU I/O-Leseoperation von Daten aus einem I/O-Modul 100, wie beispielsweise eine CPU-I/O- Registerleseoperation von Registerdaten aus der geteilten Speichersteuerung 1050 (1050'). Eine derartige Operation wird Lesen lokaler Daten genannt, im Unterschied zu einem DMA-Lesen von Daten aus einem lokalen Speicher 1060, der normalerweise Daten aus einer internen Vorrichtungssteuerung enthält. Von den lokalen Daten wird angenommen, daß sie im lokalen RAM 1060 (1060') zur Übertragung durch die geteilte Speichersteuerung 1050 (1050') gespeichert sind. Für einen Pfad laufen die Daten durch die Firewall 1000, den Modulanschluß bzw. die - verbindung 130 und zur Kreuzungsstelle 90. Wie es in Fig. 12 zu sehen ist, verzögert die Kreuzungsstelle 90 die Daten von der Firewall 1000 zur Speichersteuerung 70, so daß die Daten zur Kreuzungsstelle 90' der Speichersteuerung 70 zur selben Zeit präsentiert werden können, zu der die Daten der Speichersteuerung 70 präsentiert werden, wodurch zugelassen wird, daß die Verarbeitungssysteme 20 und 20' synchronisiert bleiben. Die Daten gehen dann mittels der internen Busse 46 und 46' aus den Speichersteuerungen 70 und 70' hinaus in die CPUs 40 und 40'. Ein ähnlicher Pfad wird zum Lesen von Daten in die CPUs 50 und 50' genommen. Daten aus der geteilten Speichersteuerung 1050 gehen durch Firewall 1010 und in die Kreuzungsstelle 95. Zu dieser Zeit werden die Daten sowohl zur Kreuzungsstelle 95' als auch durch eine Verzögerungseinheit innerhalb der Kreuzungsstelle 95 geführt.
- CPU-I/O-Leseoperationen können auch für Daten durchgeführt werden, die über eine geteilte Speichersteuerung 1050' und einen lokalen RAM in der I/O- Vorrichtung 100' von den I/O-Vorrichtungen des Verarbeitungssystems 20' empfangen werden.
- Obwohl die I/O-Module 100, 110 und 120 den jeweiligen I/O-Modulen 100', 110' und 120' gleich sind und ihnen entsprechen, sind die entsprechenden I/O-Module nicht in einer Verriegelungsschritt-Synchronisierung. Unter Verwendung der Speichersteuerung 1050' und des lokalen RAMs 1060' für ein CPU-I/O-Lesen würden die Daten zuerst zu den Kreuzungsstellen 90' und 95' gehen. Der übrige Datenpfad ist äquivalent zu dem Pfad von der Speichersteuerung 1050. Die Daten laufen von den Kreuzungsstellen 90' und 95' jeweils nach oben durch die Speichersteuerungen 70' und 75' und schließlich zu den CPUs 40' und 50'. Gleichzeitig laufen die Daten jeweils hinüber zu den Kreuzungsstellen 90 und 92, und die Daten gehen dann, ohne durch ein Verzögerungselement zu laufen, jeweils weiter nach oben zu den CPUs 40 und 50.
- Die Fig. 20B zeigt eine CPU-I/O-Schreiboperation lokaler Daten. Solche lokalen Daten werden von den CPUs 40, 50, 40' und 50' zu einem I/O-Modul wie beispielsweise zum I/O-Modul 100 übertragen. Ein Beispiel einer derartigen Operation ist ein Schreiben zu einem Register in den geteilten Speichersteuerungen 1050. Die durch die CPU 50 übertragenen Daten gehen entlang demselben Pfad, aber in einer Richtung, die entgegengesetzt zu jener der Daten während des CPU-I/O- Lesens ist. Insbesondere laufen solche Daten durch den Bus 46, die Speichersteuerung 70, verschiedene (Zwischen-)Speicher (zum Zulassen der Synchronisation), die Firewall 1000 und die Speichersteuerung 1050. Daten aus der CPU 50' folgen auch dem Pfad der CPU-I/O-Auslesungen in einer umgekehrten Richtung. Insbesondere laufen solche Daten durch den Bus 56', die Speichersteuerung 75', die Kreuzungsstelle 95', die Kreuzungsstelle 95 und in die Firewall 1010. Wie es oben gezeigt ist, prüfen die Firewalls 1000 und 1010 die Daten während I/O- Schreiboperationen zum Prüfen auf Fehler vor einer Speicherung.
- Wenn Schreiboperationen zu einem I/O-Modul in der anderen Zone durchgeführt werden, wird eine ähnliche Operation durchgeführt. Jedoch werden die Daten aus den CPUs 50 und 40' statt aus den CPUs 50' und 40 verwendet.
- Die Daten aus den CPUs 50 und 40' werden durch symmetrische Pfade zur geteilten Speichersteuerung 1050' gesendet. Die Daten aus den CPUs 50 und 40' werden durch die Firewalls 1000' und 1010' verglichen. Der Grund, warum unterschiedliche CPU-Paare zum Anbieten von I/O-Schreibdaten verwendet werden, besteht in einem Zulassen eines Prüfens aller Datenpfade während einer normalen Verwendung in einem Vollduplexsystem. Zwischenschienenprüfungen für jede Zone wurden zuvor bei den Speichersteuerungen 70, 75, 70' und 75' durchgeführt.
- Fig. 20C zeigt die Datenpfade für DMA-Leseoperationen. Die Daten aus der Speichermatrix 600 laufen gleichzeitig in die Speichersteuerungen 70 und 75 und dann zu den Kreuzungsstellen 90 und 95. Die Kreuzungsstelle 90 verzögert die zur Firewall 1000 gesendeten Daten, so daß die Daten von den Kreuzungsstellen 90 und 95 die Firewalls 1000 und 1010 zu im wesentlichen derselben Zeit erreichen.
- Ähnlich zu der CPU-I/O-Schreiboperation gibt es vier Kopien von Daten zu verschiedenen Kreuzungsstellen. Bei der Firewall werden nur zwei Kopien empfangen. Ein anderes Paar von Daten wird verwendet, wenn Leseoperationen zur Zone 11 durchgeführt werden. Die Datenpfade für die DMA-Schreiboperation sind in Fig. 20D gezeigt und sind ähnlich jenen für ein CPU-I/O-Lesen. Insbesondere laufen die Daten von der geteilten Speichersteuerung 1050' durch die Firewall 1000', die Kreuzungsstelle 90' (mit einer Verzögerung), die Speichersteuerung 70' und in die Speichermatrix 600'. Gleichzeitig laufen die Daten durch die Firewall 1010', die Kreuzungsstelle 95' (mit einer Verzögerung) und in die Speichersteuerung 75', zu welcher Zeit sie mit den Daten von der Speichersteuerung 70' während einer Zwischenschienenfehlerprüfung verglichen werden. Wie beim CPU-I/O-Lesen können die Daten bei einer DMA-Schreiboperation alternativ bei einer äquivalenten Operation nach oben durch die geteilte Speichersteuerung 1050 gebracht werden.
- Die Daten aus der Kreuzungsstelle 90' laufen auch durch die Kreuzungsstelle 90 und die Speichersteuerung 70 und in die Speichermatrix 600. Die Daten aus der Kreuzungsstelle 95' laufen durch die Kreuzungsstelle 95 und die Speichersteuerung 75, zu welcher Zeit sie mit den Daten aus der Speichersteuerung 70' während einer Gleichzeitigkeits-Zwischenschienenprüfung verglichen werden.
- Der Datenpfad für eine Speicher-Neusynchronisierungs-(resync)-Operation ist in Fig. 20E gezeigt. Bei dieser Operation müssen die Inhalte der beiden Speichermatrizen 60 und 60' gleich zueinander eingestellt werden. Bei einer Speicher- Neusynchronisierung laufen Daten aus der Speichermatrix 600' unter einer DMA- Steuerung durch die Speichersteuerungen 70' und 75' und dann jeweils durch die Kreuzungsstellen 90' und 95'. Dann treten die Daten jeweils in die Kreuzungsstellen 90 und 95 und die Speichersteuerungen 70 und 75 ein, bevor sie in der Speichermatrix 600 gesteuert werden.
- Die vorangehenden Erörterungen des Systems 10 sind unter Bezugnahme auf viele verschiedene Notwendigkeiten für Rücksetzungen gemacht worden. In bestimmten Fällen nicht erörtert, werden Rücksetzungen für Standardfunktionen verwendet, wie beispielsweise dann, wenn anfangs Leistung an das System 10 angelegt wird. Die meisten Systeme haben eine einzelne Rücksetzung, die den Prozessor immer auf irgendeinen vorbestimmten oder anfänglichen Zustand zurücksetzt und somit den Befehlsablauf des Prozessors abbricht. Ungleich zu den meisten anderen Systemen beeinträchtigen Rücksetzungen im System 10 jedoch den Ablauf einer Befehlsausführung durch die CPUs 40, 40', 50 und 50' nicht, bis es absolut notwendig ist. Zusätzlich beeinflussen Rücksetzungen im System 10 nur jene Teile, die dazu rückgesetzt werden müssen, wieder eine normale Operation herzustellen.
- Ein weiterer Aspekt der Rücksetzungen im System 10 ist ihr In-Schach-Halten. Eine der wichtigsten Überlegungen bei einem fehlertoleranten System besteht darin, daß keiner Funktion erlaubt werden sollte, das System vom Arbeiten abzuhalten, sollte jene Funktion ausfallen. Aus diesem Grund steuert kein einzelnes Rücksetzen im System 10 Elemente beider Zonen 11 und 11' ohne direktes Zusammenarbeiten zwischen den Zonen 11 und 11'. Somit sind in einer Vollduplex-Betriebsart alle Rücksetzungen in der Zone 11 unabhängig von Rücksetzungen in der Zone 11'. Wenn das System 10 jedoch in der Master/Slave-Betriebsart ist, verwendet die Slavezone die Rücksetzungen der Masterzone. Zusätzlich beeinträchtigt kein Rücksetzen im System 10 die Inhalte der Speicherchips. Somit verlieren weder der Cachespeicher 42 und 52, der Hilfsregisterspeicher 45 und 55, noch das Speichermodul 60 irgendwelche Daten aufgrund eines Rücksetzens.
- Es gibt bevorzugterweise drei Klassen von Rücksetzungen im System 10: ein "Taktrücksetzen", ein "hartes Rücksetzen" und ein "weiches Rücksetzen". Ein Taktrücksetzen richtet alle Taktphasengeneratoren in einer Zone neu aus. Ein Taktrücksetzen in der Zone 11 initialisiert auch die CPUs 40 und 50 und das Speichermodul 60. Ein Taktrücksetzen beeinflußt nicht die Modulanschlüsse bzw. ver bindungen 130 und 132, außer zum erneuten Ausrichten der Taktphasengeneratoren an jenen Modulen. Selbst wenn das System 10 in der Master/Slave-Betriebsart ist, stört ein Taktrücksetzen in der Slavezone Datenübertragungen von der Masterzone zur Slavezonen-Modulverbindung nicht. Ein Takt-rücksetzen in der Zone 11' initialisiert jedoch die entsprechenden Elemente in der Zone 11'.
- Allgemein bringt ein hartes Rücksetzen alle Zustandsvorrichtungen und -Register auf irgendeinen vorbestimmten oder anfänglichen Zustand zurück. Ein weiches Rücksetzen bringt nur Zustandsmaschinen und temporäre Speicherregister in ihren vorbestimmten oder anfänglichen Zustand zurück. Die Zustandsmaschine in einem Modul ist die Schaltung, die den Zustand jenes Moduls definiert. Register, die Fehlerinformations- und Konfigurationsdaten enthalten, werden durch ein weiches Rücksetzen nicht beeinflußt. Zusätzlich wendet das System 10 selektiv sowohl harte Rücksetzungen als auch weiche Rücksetzungen gleichzeitig an, um nur jene Elemente rückzusetzen, die zum Fortführen einer Verarbeitung neu initialisiert werden müssen.
- Die harten Rücksetzungen löschen das System 10 und bringen das System 10 wie bei herkömmlichen Systemen zu einer bekannten Konfiguration zurück. Harte Rücksetzungen werden verwendet, nachdem Leistung zugeführt ist, wenn Zonen zu synchronisieren sind, oder um ein I/O-Modul zu initialisieren oder zu sperren. Im System 10 gibt es vorzugsweise vier harte Rücksetzungen: ein Einschalt- Rücksetzen", ein "hartes CPU-Rücksetzen", ein "Modul-Rücksetzen" und ein "Vorrichtungs-Rücksetzen". Harte Rücksetzungen können weiterhin in lokale harte Rücksetzungen und harte Systemrücksetzungen aufgeteilt werden. Ein lokales hartes Rücksetzen beeinflußt nur eine Logik, die antwortet, wenn die CPU in der Slave-Betriebsart ist. Ein hartes System-Rücksetzen ist auf die Logik beschränkt, die am Kreuzungsstellenkabel 25 und an Modulverbindungen 130 und 132 angeschlossen ist.
- Das Einschalt-Rücksetzen wird zum Initialisieren der Zonen 11 und 11' sofort nach einem Einschalten verwendet. Das Einschalt-Rücksetzen erzwingt ein automatisches Rücksetzen gegenüber allen Teilen der Zone. Ein Einschalt-Rücksetzen ist niemals zwischen den Zonen des Systems 11 vorgesehen, weil jede Zone ihre eigene Leistungsversorgung hat und daher "Einschalt"-Vorgänge unterschiedlicher Länge erfährt. Das Einschalt-Rücksetzen ist durch Anwenden aller harten Rücksetzungen und eines Taktrücksetzens auf die Zone 11 oder 11' implementiert.
- Das harte CPU-Rücksetzen wird für Diagnosezwecke verwendet, um ein CPU- Modul zu einem bekannten Zustand zurückzubringen. Das hardwaremäßige CPU- Rücksetzen löscht die gesamte Information in den CPUs, den Speichersteuerungen und den Speichermodul-Statusregistern in der beeinflußten Zone. Obwohl die Cachespeicher und die Speichermodule gesperrt sind, werden die Inhalte der Hilfsregister-RAMs 45 und 55 und des Speichermoduls 60 nicht geändert. Zusätzlich ändert das harte CPU-Rücksetzen ungleich dem Einschalt-Rücksetzen die Zonenkennung der Kreuzungsstellen oder die Takt-Vorherrschaft nicht. Das harte CPU- Rücksetzen ist die Summe aller lokalen harten Rücksetzungen, die auf ein CPU- Modul angewendet werden können, und eines Taktrücksetzens.
- Das harte Modul-Rücksetzen wird zum Einstellen der I/O-Module auf einen bekannten Zustand, wie beispielsweise während eines Hochfahrprozesses, verwendet und wird auch zum Entfernen eines fehlerhaften I/O-Moduls vom System verwendet. Das harte I/O-Modul-Rücksetzen löscht alles am I/O-Modul, läßt die Firewalls in einer Diagnosebetriebsart und sperrt die Treiber.
- Ein Vorrichtungsrücksetzen wird zum Rücksetzen von I/O-Vorrichtungen verwendet, die an die I/O-Module angeschlossen sind. Die Rücksetzungen sind vorrichtungsabhängig und sind durch das I/O-Modul vorgesehen, an das die Vorrichtung angeschlossen ist.
- Die andere Klasse von Rücksetzungen enthält weiche Rücksetzungen. Wie es oben erklärt ist, löschen weiche Rücksetzungen die Zustandsmaschinen und temporäre Register im System 10, aber sie ändern nicht eine Konfigurationsinformation, wie beispielsweise die Betriebsartenbits in den Kreuzungsstellen. Zusätzlich löschen softwaremäßige Rücksetzungen auch den Fehlerbearbeitungsmechanismus in den Modulen, aber sie ändern keine Fehlerregister, wie beispielsweise ein Systemfehlerregister 898 und ein Systemausfalladressenregister 865.
- Weiche Rücksetzungen sind zielgerichtet, so daß nur die notwendigen Teile des Systems rückgesetzt werden. Beispielsweise wird dann, wenn die Modulverbindung 130 rückgesetzt werden muß, weder die CPU 40 rückgesetzt, noch werden die mit dem I/O-Modul 100 verbundenen Vorrichtungen rückgesetzt
- Es gibt drei eindeutige Aspekte für weiche Rücksetzungen. Einer davon ist, daß jede Zone verantwortlich zum Erzeugen ihrer eigenen Rücksetzung ist. Ein fälschlicher Fehler oder eine Rücksetzlogik in einer Zone wird somit davon abgehalten, Rücksetzungen in der nicht fehlerbehafteten Zone zu veranlassen.
- Der zweite Aspekt ist, daß die weiche Rücksetzung die Ablauffolge einer Befehlsausführung nicht unterbricht. Die CPUs 40, 40', 50, 50' werden nur bei einem kombinierten Takt und einem harten Rücksetzen rückgesetzt. Zusätzlich sind jene Zustandsmaschinen und Register, die zum Dienen für CPU-Befehle nötig sind, durch die Speichersteuerungen 70, 75, 70' und 75' an ein hardwaremäßiges Rücksetzen gebunden. Somit ist das weiche Rücksetzen offen für eine weiche Ausführung.
- Der dritte Aspekt ist, daß der Bereich eines weichen Rücksetzens, d.h. die Anzahl der Elemente im System 101 die durch ein weiches Rücksetzen beeinflußt wird, von der Betriebsart des Systems 10 und der ursprünglichen Rücksetzanfrage abhängt. In der Vollduplex-Betriebsart gibt die Aufforderung für ein weiches Rücksetzen, die im CPU-Modul 30 entsteht, ein weiches Rücksetzen zu allen Elementen des CPU- Moduls 30 sowie zu allen Firewalls 1000 und 1010 aus, die an die Modulverbindung 130 und 132 angebracht sind. Somit werden die Zustandsmaschinen und temporären Register aller durch die Modulverbindung 130 und 132 bedienten Module rückgesetzt Dies befreit die System-Pipeline von jedem Problem, das durch einen Übergangsfehler verursacht wird. Da das System 10 in der Duplex- Betriebsart ist, wird die Zone 11' alles tun, was die Zone 11 tut. Somit wird das CPU-Modul 30' zur selben Zeit wie das CPU-Modul 30 eine Aufforderung für ein weiches Rücksetzen ausgeben. Das weiche Rücksetzen in der Zone 11' wird dieselbe Wirkung wie das weiche Rücksetzen in der Zone 11 haben.
- Wenn das System 10 jedoch in einer Master/Slave-Betriebsart ist, bei der das CPU-Modul 30' in der Slave-Betriebsart ist, gibt eine Aufforderung für ein weiches Rücksetzen, die im CPU-Modul 30 entsteht, wie erwartet ein weiches Rücksetzen zu allen Elementen des CPU-Moduls 30 sowie zu allen Firewalls 1000 und 1010, die an die Modulverbindungen 130 und 132 angebracht sind, aus. Zusätzlich wird die Aufforderung für ein weiches Rücksetzen über die Kreuzungsstellen 90 und 90', die Kreuzungsstellenkabel 25 und die Kreuzungsstellen 90' und 95' zum CPU- Modul 30' weitergeleitet. Teile der Modulverbindungen 130' und 132' empfangen das weiche Rücksetzen Bei derselben Konfiguration setzt eine Aufforderung für ein weiches Rücksetzen, die aus dem CPU-Modul 30' entsteht, nur die Speichersteuerungen 70' und 75' und Teile der Kreuzungsstellen 90' und 95' zurück.
- Weiche Rücksetzungen enthalten "weiche CPU-Rücksetzungen" und "weiche System-Rücksetzungen". Eine weiche CPU-Rücksetzung ist eine weiche Rücksetzung, die die Zustandsmaschinen am CPU-Modul beeinflußt, das die Aufforderung entstehen ließ. Ein weiches System-Rücksetzen ist ein weiches Rücksetzen über die Modulverbindung und jene Elemente, die direkt an ihm angebracht sind. Ein CPU-Modul kann immer zu einem weichen CPU-Rücksetzen auffordern. Ein weiches System-Rücksetzen kann nur angefordert werden, wenn die Kreuzungsstelle der anfordernden CPU in der Duplex-Betriebsart, der Master/Slave-Betriebsart oder der Aus-Betriebsart ist. Eine Kreuzungsstelle in der Slave-Betriebsart nimmt ein weiches System-Rücksetzen aus der anderen Zone und erzeugt ein weiches System-Rücksetzen gegenüber ihren eigenen Modulverbindungen.
- Weiche CPU-Rücksetzungen löschen die CPU-Pipeline nach einem Fehlerzustand. Die CPU-Pipeline enthält Speicherverbindungen 80 und 82, (Zwischen-)Speicher (nicht gezeigt) in den Speichersteuerungen 70 und 75, eine DMA-Maschine 800 und Kreuzungsstellen 90 und 95. Die weiche CPU-Rücksetzung kann auch nach einem Ablaufen der DMA oder der I/O erfolgen. Ein Ablaufen des DMA oder der I/O tritt auf, wenn eine I/O-Vorrichtung nicht innerhalb einer bestimmten Zeitperiode auf eine DMA- oder eine I/O-Anfrage antwortet.
- Die Fig. 21 zeigt die Rücksetzleitungen von den CPU-Modulen 30 und 30' zu den I/O-Modulen 100, 110, 100' und 110' und zu den Speichermodulen 60 und 60'. Das CPU-Modul 30 empfängt ein Signal DC OK, das anzeigt, wenn die Leistungszufuhr eingerichtet ist. Es ist dieses Signal, das das Einschalt-Rücksetzen initialisiert. Das CPU-Modul 30' empfängt ein ähnliches Signal von seiner Leistungsversorgung.
- Eine Leitung eines harten System-Rücksetzens wird zu jedem I/O-Modul gesendet, und ein weiches System-Rücksetzen wird zu allen drei I/O-Modulen gesendet. Der Grund dafür, daß ein einzelnes hartes Rücksetzen für jedes Modul benötigt wird, besteht im Verwenden der Leitung für ein hartes System-Rücksetzen zum Entfernen einzelner I/O-Module vom System 10. Die Beschränkung auf drei I/O-Module für jedes weiche System-Rücksetzen erfolgt lediglich aufgrund einer Überlegung bezüglich der Belastung. Zusätzlich wird eine Taktrücksetzleitung für jedes I/O- Modul und jedes Speichermodul gesendet. Der Grund für ein Verwenden einer einzelnen Leitung pro Modul besteht im Steuern der Impulspause durch Steuern der Last.
- Die Fig. 22 zeigt die Elemente des CPU-Moduls 30, die Rücksetzungen betreffen. Die CPUs 40 und 50 enthalten Taktgeneratoren 2210 bzw. 2211. Die Speichersteuerungen 70 und 75 enthalten jeweilige Taktgeneratoren 2220 und 2221 und die Kreuzungsstellen 90 und 95 enthalten jeweilige Taktgeneratoren 2260 und 2261. Die Taktgeneratoren teilen die Systemtaktsignale zur Verwendung durch die einzelnen Module nach unten.
- Die Speichersteuerung 70 enthält eine Rücksetzsteuerschaltung 2230 und ein Register 2235 zur Aufforderung zu einem weichen Rücksetzen. Die Speichersteuerung 75 enthält eine Rücksetzsteuerschaltung 2231 und ein Register 2236 zur Aufforderung zu einem weichen Rücksetzen.
- Die Kreuzungsstelle 90 enthält sowohl einen lokalen Rücksetzgenerator 2240 als auch einen Systemrücksetzgenerator 2250. Die Kreuzungsstelle 95 enthält einen lokalen Rücksetzgenerator 2241 und einen Systemrücksetzgenerator 2251. Der "lokale" Teil einer Kreuzungsstelle ist jener Teil der Kreuzungsstelle, der beim CPU-Modul bleibt, wenn jene Kreuzungsstelle in der Slave-Betriebsart ist, und enthält daher die seriellen Register und einige der parallelen Register. Der "System"- Teil einer Kreuzungsstelle ist jener Teil der Kreuzungsstelle, der für einen Zugriff auf die Modulverbindungen 130 und 132 (oder 130' und 132') und die Kreuzungsstellenkabel 25 benötigt wird.
- Die lokalen Rücksetzgeneratoren 2240 und 2241 erzeugen Rücksetzungen für das CPU-Modul 30 durch Senden harter und weicher Rücksetzsignale zu den lokalen Rücksetzsteuerschaltungen 2245 und 2246 der jeweiligen Kreuzungsstellen 90 und 95 und zu den Rücksetzsteuerschaltungen 2230 und 2231 der jeweiligen Speichersteuerungen 70 und 75. Die lokalen Kreuzungsstellen Rücksetzsteuerschaltungen 2245 und 2246 antworten auf die weichen Rücksetzsignale durch Rücksetzen ihrer Zustandsmaschine, der (Zwischen-)Speicher, die zu übertragende Daten speichern, und ihrer Fehlerregister. Jene Schaltungen antworten auf die harten Rücksetzsignale durch Durchführen derselben Handlungen, wie sie für die weichen Rücksetzungen durchgeführt werden, und auch durch Rücksetzen der Fehlerregister und der Konfigurationsregister. Die Rücksetzsteuerschaltungen 2230 und 2231 antworten auf harte und weiche Rücksetzsignale auf eine ähnliche Weise.
- Zusätzlich sendet der lokale Rücksetzgenerator 2240 Taktrücksetzsignale zu den I/O-Modulen 100, 110 und 120 über die Modulverbindungen 130 und 132. Die I/O- Module 100, 110 und 120 verwenden die Taktrücksetzsignale zum Rücksetzen ihrer Takte auf die unten beschriebene Weise. Die Register 2235 und 2236 zur Anforderung eines weichen Rücksetzens senden weiche Aufforderungssignale zu den lokalen Rücksetzgeneratoren 2240 bzw. 2241.
- Systemrücksetzgeneratoren 2250 und 2251 der jeweiligen Kreuzungsstellen 90 und 95 senden Signale zum harten Rücksetzen des Systems und Signale zum weichen Rücksetzen des Systems zu den I/O-Modulen 100, 110 und 120 über die Modulverbindungen 130 bzw. 132. Die I/O-Module 100, 110 und 120 antworten auf Signale für ein weiches Rücksetzen durch Rücksetzen aller Register, die von CPU- Daten oder -Befehlen abhängen. Jene Module antworten auf die Signale für ein hartes Rücksetzen durch Rücksetzen derselben Register, wie es weiche Rücksetzungen tun, und auch durch Rücksetzen aller Konfigurationsregister.
- Zusätzlich senden die Systemrücksetzgeneratoren 2250 und 2251 auch die Signale für ein weiches und ein hartes Rücksetzen des Systems zu der Systemrücksetzsteuerschaltung 2255 und 2256 jeder Kreuzungsstelle. Die Systemrücksetzsteuerschaltungen 2255 und 2256 antworten auf die Signale zum weichen Rücksetzen des Systems und auf die Signale zum harten Rücksetzen des Systems auf eine Weise, die gleich der Antwort der lokalen Rücksetzsteuerschaltungen auf die Signale für ein lokales weiches und hartes Rücksetzen ist.
- Die Speichersteuerungen 70 und 75 veranlassen, daß die jeweiligen Kreuzungsstellen 90 und 95 die weichen Rücksetzungen erzeugen, wenn die jeweiligen CPUs 40 und 50 die geeigneten Codes in die jeweiligen Register 2235 und 2236 zum Auffordern zu einem weichen Rücksetzen schreiben. Die Register 2235 und 2236 zum Auffordern zu einem weichen Rücksetzen senden Signale zum Anfordern eines weichen Rücksetzens zu den jeweiligen lokalen Rücksetzgeneratoren 2240 und 2241. Das codierte Fehlersignal wird von der Speichersteuerung 70 zu den lokalen Rücksetzgeneratoren 2240 und 2241 gesendet.
- Weiche Systemrücksetzungen werden zwischen Zonen entlang derselben Datenpfade gesendet, auf denen Daten- und Steuersignale gesendet werden. Somit wird dieselbe Philosophie zum Ausrichten von Verzögerungen für Rücksetzungen wie für Daten und Adressen verwendet, und Rücksetzungen erreichen alle Elemente in beiden Zonen zu etwa derselben Zeit.
- Harte Rücksetzungen werden durch die CPUs 40 und 50 erzeugt, die den geeigneten Code in die Register 2243 für eine lokale harte Rücksetzung schreiben, oder durch die Anfrage nach einem Einschalt-Rücksetzen, das durch das Signal DC OK veranlaßt wird.
- Eine Synchronisierschaltung 2270 in der Kreuzungsstelle 90 enthält geeignete Verzögerungselemente zum Sicherstellen, daß das Signal DC OK zur selben Zeit zu allen lokalen und Rücksetzgeneratoren 2240, 2550, 2241 und 2251 geht.
- Tatsächlich ist eine Synchronisierung der Rücksetzungen im System 10 sehr wichtig. Das ist der Grund dafür, warum die Rücksetzsignale in den Kreuzungsstellen entstehen. Auf diese Weise können die Rücksetzungen gesendet werden, um bei unterschiedlichen Modulen und Elementen in den Modulen etwa synchron anzukommen.
- Wenn man die Struktur in den Fig. 21 und 22 versteht, kann die Ausführung der verschiedenen harten Rücksetzungen besser verstanden werden. Das Einschalt- Rücksetzen erzeugt sowohl ein hartes Systemrücksetzen als auch ein hartes bkales Rücksetzen als auch ein Taktrücksetzen. Allgemein sind die Kreuzungsstellen 90, 95, 90' und 95' anfangs in sowohl in der Betriebsart einer ausgeschalteten Kreuzungsstelle als auch in der Betriebsart einer ausgeschalteten Neusynchronisierung und derart, daß beide Zonen eine Takt-Vorherrschaft aktivieren.
- Das CPU/MEM-Ausfallrücksetzen wird automatisch aktiviert, wann immer die Speichersteuerungen 70, 75, 70' und 75' einen CPU/MEM-Ausfall erfassen. Die Codefehlerlogik wird von einer Fehlerlogik 2237 und 2238 zu beiden Kreuzungsstellen 90 und 95 gesendet. Das CPU-Modul, das den Fehler erzeugte, wird dann vom System 10 durch Einstellen seiner Kreuzungsstelle in den Slave-Zustand und durch Einstellen der Kreuzungsstelle in dem anderen CPU-Modul in den Master- Zustand entfernt. Das CPU-Modul ohne Fehler erfährt jedoch kein Rücksetzen. Statt dessen wird es über den Fehler im anderen Modul durch einen Code in einem seriellen Kreuzungsstellen-Fehlerregister (nicht gezeigt) benachrichtigt. Das CPU/MEM-Fehlerrücksetzen besteht aus einem Taktrücksetzen gegenüber der Zone mit dem fehlerbehafteten CPU-Modul und einem lokalen weichen Rücksetzen gegenüber jenem Modul.
- Ein Neusynchronisierungsrücksetzen ist im wesentlichen ein weiches Systemrücksetzen mit einem lokalen harten Rücksetzen und einem Taktrücksetzen. Das Neusynchronisierungsrücksetzen wird dazu verwendet, zwei Zonen in eine Verriegelungsschritt-Synchronisierung zu bringen. Wenn die Inhalte der Speichermodule 60 und 60' einschließlich der gespeicherten Zustände der CPU-Register nach einer Periode, in der die Zonen 11 und 11' nicht synchronisiert waren, gleich zueinander eingestellt werden, wird das Neusynchronisierungsrücksetzen dazu verwendet, die Zonen in eine kompatible Konfiguration zu bringen, so daß sie in einer Duplex- Betriebsart neu starten können.
- Das Neusynchronisierungsrücksetzen ist im wesentlichen ein hartes CPU- Rücksetzen und ein Taktrücksetzen. Das Neusynchronisierungsrücksetzen wird durch weiches Schreiben der Neusynchronisierungsrücksetzadresse in eines der parallelen Kreuzungsstellenregister aktiviert. Zu jener Zeit sollte eine Zone in der Kreuzungsstellenmaster/Neusynchronisierungsmaster-Betriebsart sein, und die andere in der Kreuzungsstellenslave/Neusynchronisierungsslave-Betriebsart. Ein gleichzeitiges Rücksetzen wird dann an beiden Zonen durchgeführt, das unter anderem alle vier Kreuzungsstellen in die Duplex-Betriebsart einstellt. Da das Neusynchronisierungsrücksetzen kein weiches Systemrücksetzen ist, empfangen die I/O-Module kein Rücksetzen.
- Das bevorzuge Ausführungsbeispiel des Systems 10 stellt auch sicher, daß Taktrücksetzsignale keine übereinstimmende Takte rücksetzen, sondern nur nichtübereinstimmende Takte. Der Grund dafür besteht darin, daß ein Takt dann, wann immer er zurückgesetzt wird, die Taktzeitgabe ändert, was wiederum die Operation der Module mit solchen Takten beeinflußt. Wenn das Modul eine Operation richtig durchführt und sein Takt in der richtigen Phase ist, dann ist ein Ändern seines Betriebs sowohl unnötig als auch schädlich.
- Die Fig. 23 zeigt ein bevorzugtes Ausführungsbeispiel einer Schaltung, die sicherstellt, daß nur nichtübereinstimmende Takte zurückgesetzt werden. Die in Fig. 23 gezeigte Schaltung sitzt vorzugsweise in den Taktgeneratoren 2210, 2211, 2220, 2221, 2260 und 2261 der entsprechenden in Fig. 22 gezeigten Module.
- Beim bevorzugten Ausführungsbeispiel enthalten die verschiedenen Taktgeneratoren 2210, 2211, 2220, 2221, 2260 und 2261 einen Anstiegsflankendetektor 2300 und einen Phasengenerator 2310. Der Anstiegsflankendetektor 2300 empfängt die Taktrücksetzsignale von den Kreuzungsstellen 90 und 95 und erzeugt einen Impuls einer bekannten Dauer gleichzeitig mit der Anstiegsflanke des Taktrücksetzsignals. Jener Impuls ist in einem Eingang zum Phasengenerator 2310, wie es die internen Taktsignale für das bestimmte Modul sind. Die internen Taktsignale für jenes Modul sind Taktsignale, die von den Systemtaktsignalen abgeleitet sind, die von den Oszillatorsystemen 200 und 200' verteilt worden sind.
- Der Phasengenerator 2310 ist vorzugsweise eine Schaltung zum Teilen nach unten, die unterschiedliche Phasen für die Taktsignale bildet. Es können auch andere Aufbauten für den Phasengenerator 2310 verwendet werden, wie beispielsweise Schieberegister für ein erneutes Zirkulieren
- Vorzugsweise veranlaßt der Anstiegsflankenimpuls aus dem Anstiegsflankendetektor 2300 den Phasengenerator 2310 dazu, eine vorausgewählte Phase auszugeben. Somit könnte beispielsweise dann, wenn der Phasengenerator 2310 eine Schaltung zum nach unten Teilen mit mehreren Stufen wäre, der Taktrücksetz- Anstiegsflankenimpuls eine Setzeingabe zu der Stufe sein, die die vorausgewählte Phase und eine Rücksetzeingabe zu allen anderen Stufen erzeugt. Wenn der Phasengenerator 2310 jene Phase schon erzeugt hätte, dann wäre das Vorhandensein des synchronisierten Taktrücksetzsignals im wesentlichen überflüssig.
- Die so organisierten Rücksetzungen sind derart aufgebaut, daß sie die minimale Unterbrechung gegenüber der normalen Ausführung des Systems bieten, und nur dann die einschneidende Handlung eines Unterbrechens der normalen Ablauffolgen einer Befehlsausführung veranlassen, wenn eine derartige einschneidende Handlung erforderlich ist. Dies ist insbesondere in einer Dual- oder Vielfachzonenumgebung wichtig, und zwar aufgrund der Probleme einer Neusynchronisierung, die herkömmliche Rücksetzungen verursachen. Somit wird bevorzugt, die Anzahl harter Rücksetzungen zu minimieren, wie es im System 10 durchgeführt wird.
- Eine Fehlerbearbeitung enthält eine Fehlererfassung, eine Fehlerbehebung, und ein Berichten über den Fehler. Die Fehlererfassung ist oben unter Bezugnahme auf die Vergleichselemente in den Speichersteuerungen 70, 75, 70' und 75', das Speichermodul 60 und 60', die Kreuzungsstellen 90, 95, 90' und 95' und die Firewalls 1000, 1010 und 1000' und 1010' erörtert worden.
- Eine Fehlerbehebung ist bei der vorliegenden Erfindung derart aufgebaut, daß sie die Zeit minimiert, die auf ein solches Beheben verwendet wird, und daß der zusätzliche Aufwand minimiert wird, den eine Fehlerbehebung einer normal ausführenden Software auferlegt. Es gibt zwei Aspekte bezüglich dieser Fehlerbehebung: ein hardwaremäßiger und ein softwaremäßiger. Für die meisten Fehler wird eine hardwaremäßige Fehlerbehebung versucht, bevor eine softwaremäßige Fehlerbehebung innerhalb des allgemeinen softwaremäßigen Fehlerverarbeitungsverfahrens versucht wird. Wenn die Fehler, für die eine hardwaremäßige Fehlerbehebung versucht wird, vorübergehend sind, kann eine Fehlerbehebung zurück zu einer fehlertoleranten Verriegelungsschrittoperation die meiste Zeit zu Gänze hardwaremäßig durchgeführt werden. Wenn eine hardwaremäßige Fehlerbehebung nicht erfolgreich ist oder nicht verwendet wird, dann wird eine softwaremäßige Fehlerbehebung versucht. Eine solche softwaremäßige Behebung ist derart aufgebaut, daß den CPUs 40, 50 und 40', 50' erlaubt wird, einen ordentlichen Übergang von einer normalen Operation zum Fehlerbearbeitungsprozeß durchzuführen.
- Eine Fehlerbehebung ist beendet, wenn das Datenverarbeitungssystem bestimmt hat, welches Modul die Quelle des Fehlers ist, und die fehlerbehaftete Vorrichtung gesperrt hat oder das System anderweitig derartig rekonfiguriert hat, daß es die fehlerbehaftete Vorrichtung umgeht.
- Beim bevorzugten Ausführungsbeispiel der Erfindung ist eine Fehlerbehebung weitestmöglich auf der Hardwareebene implementiert. Dies ist so gemacht, um Zeit zu minimieren, die in der Fehlerbehebungsphase einer Fehlerbearbeitung verwendet wird, und um die Komplexität der Software zu min imieren. Eine softwaremäßige Intervention benötigt im allgemeinen mehr Zeit und veranlaßt eine größere Auswirkung auf den Rest des Systems. Dies ist insbesondere wahr in einem Multiprozessorsystem, wie beispielsweise dem System 10, wo unterschiedliche Zonen 11 und 11' in einer Verriegelungsschritt-Synchronisierung miteinander sind. Je größer der Prozentsatz an Fehlerbearbeitung ist, der in der Hardware stattfinden kann, um so geringer wird die Auswirkung auf das gesamte System.
- Es gibt drei Grund kategorien von Ausfällen oder Fehlern im System 10, die unter Verwendung eines hardwaremäßigen Fehlerbehebungsalgorithmus gelöst werden können. Diese Fehler sind ein CPU-I/O-Fehler, ein CPU/MEM-Ausfall und ein DMA-Fehler. Die Fehlerbearbeitungsroutinen für jeden Typ von Fehler unterscheiden sich etwas.
- Fig. 24 stellt ein Ablaufdiagramm 2400 dar, das das gesamte hardwaremäßige Fehlerbearbeitungsverfahren zeigt. Wie bei früheren Erklärungen wird das Verfahren im Prozeß 2400 dann, wenn es möglich ist, unter Bezugnahme auf die Zone 11 beschrieben, wobei zu verstehen ist, daß der Prozeß auf äquivalente Weise bei den Elementen der Zone 11' ausgeführt werden kann.
- Vor einer Erörterung des Diagramms 2400 ist es wichtig, bestimmte Prinzipien der Fehlerbearbeitung zu verstehen. Nachdem eine Datenverarbeitungsoperation durchgeführt ist, gibt es ein Zeitfenster, während dem Information vorhanden ist, die zuläßt, daß ein Fehler mit der Busoperation verbunden wird, die den Fehler erzeugte. Der Ausdruck "Busoperation" bezieht sich auf eine Gesamtoperation, die durch die CPUs 40, 50, 40' oder 50' initiiert wird und die Betriebsmittel, wie beispielsweise die Speichermodule 60 und 60', benötigt, die nicht direkt mit den CPUs 40, 50, 40' oder 50' verbunden sind.
- Wie es Fig. 24 darstellt, wird, nachdem eine Busoperation durchgeführt ist (Schritt 2410), bestimmt, ob ein Fehler auftrat. Wenn kein Fehler erfaßt wird (Schritt 2420), gibt es keine Notwendigkeit für eine hardwaremäßige Fehlerbearbeitung und das Verfahren ist beendet (Schritt 2440).
- Wenn jedoch ein Fehler erfaßt wird, muß eine hardwaremäßige Fehlerbearbeitung im Zeitfenster nach der Busoperation initiiert werden, die den Fehler verursachte. Zuerst muß der Typ des Fehlers identifiziert werden (Schritt 2430). Die Fehlertypen sind ein CPU-I/O-Fehler, ein DMA-Fehler oder ein CPU/MEM-Fehler.
- In Abhängigkeit von dem Datenverarbeitungsbefehl oder der -operation, der bzw. die durch das Datenverarbeitungssystem 10 durchgeführt wird, werden verschiedene hardwaremäßige Fehlerbearbeitungsverfahren verfolgt. Wenn ein CPU-I/O- Fehler erfaßt wird, wird in eine CPU-I/O-Fehlerbearbeitungseinheit eingetreten (Schritt 2450). Der CPU-I/O-Fehler zeigt allgemein irgendeinen Typ von Fehler an, der in einem Gebiet auftrat, das peripher zu den CPUs 40 und 50, dem Speichermodul 60 und den Teilen der Speichersteuerungen 70 und 75, die mit dem Speichermodul 60 eine Schnittstelle bilden, ist. Ein CPU-I/O-Fehler tritt beispielsweise dann auf, wenn es eine abgelaufene Zeit von CPU-Bussen 88 und 89 gibt, oder einen I/O-Fehlvergleich, der an entweder den Firewalls 1000 und 1010, den Speichersteuerungen 70 und 75 oder den Kreuzungsstellen 90 und 95 erfaßt wird. Für eine derartige Situation kann von den CPUs 40 und 50 angenommen werden, daß sie eine zuverlässige Operation fortführen können.
- Die CPU-I/O-Fehlerbearbeitung ist unten beschrieben. Im allgemeinen werden jedoch die Register, nachdem die CPU-I/O-Hardware-Fehlerverarbeitung beendet ist, derart eingestellt, daß sie anzeigen, ob der Fehler vorübergehend war oder fest, und werden mit einer anderen Information für eine Fehleranalyse geladen. Ein vorübergehender Ausfall oder Fehler bedeutet, daß ein nochmaliger Versuch einer Fehleroperation während einer hardwaremäßigen Fehlerbehebung erfolgreich war. Auch wird eine Unterbrechung (Sys Err) eines vorbestimmten Pegels eingestellt, so daß die CPUs 40 und 50 eine softwaremäßige Fehlerbehebung oder ein Protokoll ausführen.
- Wenn ein Fehler während einer DMA-Operation erfaßt wird, wird in die DMA- Fehlerbearbeitungseinheit eingetreten (Schritt 2452). Dieser Fehler würde beispielsweise während einer DMA-Operation erfaßt, wenn es eine abgelaufene Zeit für die CPU-Busse 88 und 89 gibt, oder einen I/O-Fehlvergleich, der entweder an den Firewalls 1000 und 1010, den Speichersteuerungen 70 und 75 oder den Kreuzungsstellen 90 und 95 erfaßt wird. Weil eine DMA asynchron in bezug auf die Operation der CPUs 40 und 50 arbeitet, ist es die hauptsächliche Handlung der DMA-Bearbeitungseinheit (Schritt 2452), die DMA-Maschine 800 herunterzufahren und verschiedene andere unten erörterte Antworten zu verwenden, wie beispielsweise ein Einstellen einer Systemfehlerunterbrechung und einer DMA- Unterbrechung.
- Wenn ein derartiger Fehler erfaßt wird, daß die Operation der CPUs 40 oder 50 oder die Inhalte des Speichermoduls 60 fraglich werden, dann wird der Fehler als ein CPU/MEM-Ausfall angesehen, und es wird in die CPU/MEM- Ausfallbearbeitungseinheit eingetreten (Schritt 2454). Beispiele von CPU/MEM- Ausfällen sind ein Doppelbit-ECC-Fehler, ein Fehlvergleich von Daten von den CPUs 40 und 50 oder ein Fehlvergleich in bezug auf zum Speichermodul 60 gesendete Adressen. Ein Erfassen eines CPU/MEM-Ausfalls versetzt den Zustand des CPU-Moduls 30 und seines zugehörigen Speichermoduls 60 in einen zweifelhaften Zustand. Dieser Fehlertyp wird als kritisch angesehen und erfordert, daß das CPU-Speicherpaar, das den CPU/MEM-Ausfall erfuhr, sich selbst automatisch herunterfährt und das System rekonfiguriert. Der fragliche Zustand der fehlerbehafteten CPU oder eines zugehörigen Speichers macht eine weitere hardwaremäßige oder softwaremäßige Fehlerverarbeitung durch das entsprechende CPU- Speicherpaar unzuverlässig.
- Das Ablaufdiagramm der Fig. 25 stellt einen bevorzugten Prozeß 2500 zum Bearbeiten von CPU-I/O-Fehlern dar, der die CPU-I/O-Bearbeitungseinheit (Schritt 2450) der Fig. 24 enthält. Beim bevorzugten Ausführungsbeispiel der Erfindung sind die bei diesem Fehlerbearbeitungsprozeß beschriebenen Signale sowie die anderen Fehlerbearbeitungsprozesse in Fig. 26 dargestellt.
- Ein wichtiger Aspekt der hardwaremäßigen CPU-I/O-Fehlerbearbeitung besteht darin, daß einige Operationen, die extern zu den Speichersteuerungen 70 und 75 sind, keine Verzögerung nach der Operation haben, bis ein Fehlersignal empfangen wird. Daher gibt es dann, wenn ein Fehlersignal für Daten empfangen wird, die einer solchen Operation entsprechen, eine Verzögerung des Systems, so daß sich alle Fehlerberichte zu den Speichersteuerungen 70 und 75 ausbreiten.
- Die Folge von durch die Speichersteuerungen 70 und 75 durchgeführten Operationen, nachdem ein CPU-I/O-Fehlersignal empfangen ist (Schrift 2510), wird durch die Speichersteuerungen 70 und 75 initiiert, wenn eine von drei Bedingungen existieren: (1) ein spezifisches Signal wird von den Kreuzungsstellen 90 und 95 nach oben gesendet, (2) ein Fehlerbericht wird durch das Speichermodul 60 erzeugt, oder (3) ein internes Fehlersignal wird bei den Speichersteuerungen 70 und 75 erzeugt.
- Das von den Kreuzungsstellen 90 und 95 gesendete spezifische Signal ist ein Code, der gleichzeitig entlang den Steuerstatusleitungen der Busse 88 und 89 gesendet wird. Beim bevorzugten Ausführungsbeispiel der Erfindung wird ein solcher Code entweder dann erzeugt, wenn ein Fehlvergleich an den Firewalis 1000 und 1010 erfaßt wird, oder wenn die Kreuzungsstellen 90 und 95 einen Schienenfehlvergleich erfassen, wie beispielsweise in EXKLUSIV-ODER-Gattern 960 und 960m in Fig. 11. Wenn die Firewalls 1000 und 1010 einen Fehivergleich erfassen, senden sie ein vorbestimmtes Bitmuster zu den Kreuzungsstellen 90 und 95 über die jeweiligen Modulverbindungen 130 und 132, und jenes Muster wird dann zu den jeweiligen Speichersteuerungen 70 und 75 zurückgesendet.
- Die Speichersteuerungen 70 und 75 senden diese Fehlersignale zu einer Diagnose-Fehlerregisterlogik 870, die in Fig. 9 gezeigt ist, welche einen Fehlerimpuls erzeugt. Jener Fehlerimpuis setzt Bits im Diagnose-Fehlerreggister 880 (Schritt 2510). Der Fehlerimpuls von der Diagnose-Fehlerlogik 870 ist eine Eingabe zu einer Fehlerkategorisierungslogik 850.
- Die Ausgabe der Fehlerkategorisierungslogik 850 wird zu einem Codierer 855 gesendet, der einen Fehlercode erzeugt (Schritt 2510). Der Fehlercode wird von einem UND-Gatter 856 gesendet, wenn die hardwaremäßige Fehlerbearbeitung freigegeben ist, und ein Fehlersperrbit 878 wird entsprechend gesetzt. Der Fehlercode wird dann zu den Kreuzungsstellen 90 und 95 gesendet.
- In Antwort auf den Fehlercode führen die Kreuzungsstellen 90 und 95 eine Folge von hardwaremäßigen Operationen durch (Schrift 2520). Eine jener Operationen ist die Aktivierung eines vorbestimmten Fehlersignals auf den Zonenfehlerleitungen zur Verteilung zum System 10 (Schritt 2520). Es gibt eine Gruppe von vier Zonenfehlerleitungen pro Zone, wie es in den Fig. 19 und 26 gezeigt ist. Das Zonenfehlersignal für die Zone 11 wird gebildet, wenn die Fehlerleitungen von Kreuzungsstellen 90 und 95 (Kreuzungsstellen 90' und 95' für das Fehlersignal der Zone 11') miteinander ODER-verknüpft werden (ODER-Gatter 1990 und 1992 in Fig. 19). Dies wird durchgeführt, so daß ein konsistenter Fehlerbericht durch die Kreuzungsstellen 90 und 95 (und die Kreuzungsstellen 90' und 95') erzeugt wird, um zu den anderen Kreuzungsstellen der Zone ausgesendet zu werden.
- Nach einer Verteilung des vorbestimmten Fehlersignals zu den anderen Kreuzu ngsstellen (Schritt 2520) postieren Fehlerlogikschaltungen in den Kreuzungsstellen 90, 95, 90' und 95' gleichzeitig eine Systemfehlerunterbrechung, frieren die Ablaufverfolgungs-RAMs ein und senden eine Aufforderung für einen nochmaligen Versuch (Schritt 2520). Die Kreuzungsstellen 90 und 95 postieren eine Systemfehlerunterbrechung durch Einstellen der Systemfehlerleitung (siehe Fig. 26), die die Unterbrechung zu den CPUs 40 und 50 überträgt. Die Kreuzungsstellen 90 und 95 frieren auch die Ablaufverfolgungs-RAMs ein (Schritt 2520), die mit verschiedenen Bussen verbunden sind, um eine Businformation einzufangen, und zwar durch Einstellen einer globalen Fehlerleitung (siehe Fig. 26).
- Die Ablaufverfolgungs-RAMs werden eingefroren, um die genau vor der Erfassung des Fehlers als letztes übertragenen Daten einzufangen. Die Funktion der Ablaufverfolgungs-RAMs wird in diesem Abschnitt kurz beschrieben, und ihre Verwendung bei einer Fehleranalyse wird bei nder Erörterung der softwaremäßigen Fehlerbearbeitung erörtert.
- Im System 10 sind die Ablaufverfolgungs-RAMs vorzugsweise an allen größeren Schienendatenpfaden angeordnet. Die Fig. 27 ist ein Blockdiagramm des CPU- Moduls 30 und des I/O-Moduls 100, das bevorzugte Stellen der Ablaufverfolgungs- RAMs im Computersystem 10 zeigt. Natürlich können auch andere Stellen ausgewählt werden. Die Funktion der Ablaufverfolgungs-RAMs besteht im Zulassen der Identifikation der Quelle von Fehlern durch Verfolgen des Ablaufs der Fehlvergleiche von Daten zwischen Ablaufverfolgungs-RAM-Inhalten.
- In Fig. 27 sind die Ablaufverfolgungs-RAMs 2700 und 2705 in jeweiligen Firewalls 1000 und 1010 angeordnet und sind mit jeweiligen Modulverbindungen 130 und 132 gekoppelt. Die Ablaufverfolgungs-RAMs 2710, 2715 bzw. 2718 sind an den Schnittstellen zu entsprechenden Bussen der Kreuzungsstelle 90 angeordnet, und die Ablaufverfolgungs-RAMs 2720, 2725 bzw. 2728 sind an den Schnittstellen zu entsprechenden Bussen der Kreuzungsstelle 95 angeordnet. Eine komplementäre Gruppe von Ablaufverfolgungs-RAMs ist im Verarbeitungssystem 20' angeordnet.
- In der Zone 11 überwachen die Ablaufverfolgungs-RAMs 2700 und 2718 die Modulverbindung 130 und die Ablaufverfolgungs-RAMs 2705 und 2728 überwachen die Modulverbindung 132. Die Ablaufverfolgungs-RAMs 2715 und 2725 überwachen das Kreuzungsstellenkabel 25, der Ablaufverfolgungs-RAM 2710 überwacht den Bus 88 und der Ablaufverfolgungs-RAM 2720 überwacht den Bus 89. Die entsprechenden Ablaufverfolgungs-RAMs in der Zone 11' überwachen die jeweils entsprechenden Busse.
- Ein Beispiel eines Ablaufverfolgungs-RAMs 2800 ist in Fig. 28 gezeigt. Der Ablaufverfolgungs-RAM 2800 ist vorzugsweise als zirkularer Puffer organisiert, der die Daten speichert, die bei den N letzten Zyklen des zugehörigen Buspfads übertragen werden.
- Der Ablaufverfolgungs-RAM 2800 weist ein Pufferregister 2805 auf, dessen Eingänge derart gekoppelt sind, daß sie Daten von einem zugehörigen Datenpfad empfangen. Eine Ladeeingabe in den Puffer 2805 ist die Ausgabe des UND- Gatters 2815. Die Eingaben zum UND-Gatter 2815 sind ein Taktsignal von dem Datenpfad, ein globales Fehlersignal, das erzeugt wird, wenn ein Fehler erfaßt wird, und ein Ablaufverfolgungs-RAM-Freigabesignal von einem Ablaufverfolgungs- RAM-Decodierer 2820.
- Das Ablaufverfolgungs-RAM-Freigabesignal ermöglicht eine Speicherung von Daten vom entsprechenden Bus, wenn der Bus nicht in einem freien Zustand ist. Während freier Zyklen des Busses wird der Bus nicht dazu verwendet, Daten zu übertragen, weshalb der Ablaufverfolgungs-RAM nicht fortfährt, die auf dem Bus vorhandenen Signale zu speichern.
- Vorzugsweise veranlaßt das globale Fehlersignal den Ablaufverfolgungs-RAM, seine Daten einzufrieren und ein Speichern zusätzlicher Signale zu stoppen. Das Inverse des globalen Fehlersignals wird dem UND-Gatter 2815 präsentiert, so daß der Puffer 2805 dann, wenn das globale Fehlersignal aktiviert ist, aufhört, die Signale zu speichern, die auf dem zugehörigen Daten pfad vorhanden sind.
- Die Adresseneingaben des Puffers 2805 werden durch einen zyklischen Zähler 2810 zugeführt, der ein Zählsignal vom UND-Gatter 2815 empfängt.
- Jeder der Ablaufverfolgungs-RAMs hält in seinem Speicher eine Kopie der N letzten nicht freien Transaktionen auf dem zu ihm gehörigen Datenpfad. Beispielsweise hält der Ablaufverfolgungs-RAM 2700 in Fig. 27 eine Kopie der N letzten Transaktionen an der Modulverbindung 130.
- Die Tiefe N des Ablaufverfolgungs-RAM 2800 wird durch die Gesamtanzahl von Buszyklen bestimmt, die für die entfernteste Nachricht erforderlich ist, die übertragen wird, zusätzlich der Gesamtanzahl von Zyklen, die erforderlich ist, das globale Fehlersignal zum Ablaufverfolgungs-RAM zu senden, wenn ein Fehler oder ein Ausfall auftritt. Beim bevorzugten Ausführungsbeispiel werden sechzehn nichtfreie Buszyklen gespeichert.
- Die übrige in direkter Antwort auf das Erzeugen des Fehlercodes vorgenommene Handlung besteht im Übertragen einer Anfrage für ein erneutes Versuchen. Die Fehlerlogikschaltungen 2237 und 2238 in den Kreuzungsstellen 90 und 95 senden eine Anfrage zum erneuten Versuchen (siehe Fig. 26) in Antwort auf den Fehlercode (Schritt 2520). Die Anfrage zum erneuten Versuchten veranlaßt, daß eine Reihe von Operationen zu etwa derselben Zeit in den Speichersteuerungen 70 und 75 erfolgt (Schritt 2530): ein Inkrementieren des Fehlerpegels, ein Einfrieren des Systemausfallfehleradressenregisters und ein Senden einer Anfrage für ein weiches Rücksetzen.
- Der aktuelle hardwaremäßige Fehlerbehebungs-Ausfallpegel oder -Status sitzt in zwei Bits des Systemausfall-Fehlerregisters 898. Diese zwei Bits sind das Übergangsbit und das feste Bit (siehe Fig. 9). Die Kombination dieser zwei Bits wird als Busfehlercode bezeichnet. Es gibt drei gültige Werte des Busfehlercodes, wenn er CPU-I/O-Zeichensätze interpretiert. Ein gültiger Wert entspricht einem Systemstatus, in dem es keine aktuell anhängigen Fehler gibt und aktuell kein Fehlerbehebungsalgorithmus ausgeführt wird. Ein zweiter gültiger Wert des Busfehlercodes entspricht dem Systemstatus, in dem es einen Fehler bei der anfänglichen Ausführung einer Operation gegeben hat oder ein Fehler aufgetreten ist, für den kein nochmaliger Versuch versucht wurde. Der dritte gültige Wert entspricht dem Fall eines Fehlers, der auftritt, nachdem eine Operation nochmals versucht worden ist. Die Anfrage zum nochmaligen Versuchen ist eine Eingabe zum Codierer 895, der den Ausfallpegel inkrementiert.
- Der Ausfallpegel kann mehrere Male um mehrere Fehler inkrementiert werden, wenn die Fehler so häufig auftreten, daß der ursprüngliche Ausfallpegel durch die softwaremäßige Fehlerverarbeitung nicht gelöscht wurde. Somit können zwei Ausfälle, die in schneller Aufeinanderfolge auftreten, durch die softwaremäßige Fehlerverarbeitung derart angesehen werden, daß sie ein fester Ausfall sind.
- Das Inkrementieren des Ausfallpegels führt dazu, daß das Systemausfall- Fehleradressenregister einfriert. Das Übergangsbit wird auf sowohl den ersten als auch den zweiten Ausfallpegel gesetzt, aber nicht auf den niedrigsten Pegel, der keinen aktuell anhängigen Fehlern entspricht. Das Übergangsbit sperrt das Systemausfall-Fehleradressenregister 898 und friert es dadurch ein. Ein Systemausfall- Fehleradressenregister 865 ist in den Speichersteuerungen 70 und 75 enthalten und wird eingefroren, um zuzulassen, daß die aktuelle Busoperation erneut versucht wird, und um eine Durchführung einer Diagnose zu unterstützen.
- Eine Anfrage für ein weiches Rücksetzen wird durch die jeweiligen Speichersteuerungen 70 und 75 zu den Kreuzungsstellen 90 und 95 gesendet (Schritt 2530), und zwar durch Einstellen der in Fig. 26 gezeigten Leitungen für eine Anfrage für ein softwaremäßiges Rücksetzen Zusätzlich stoppen dann, wenn die Speichersteuerungen 70 und 75 die Anfrage für ein erneutes Versuchen empfangen, diese die DMA-Maschine 800, schreiben einen Fehlercode in ein Statusregister in einer DMA-Steuerung 820, um den Typ des Fehlers anzuzeigen, und frieren die jeweiligen Busse 88 und 89 zwischen den Speichersteuerungen 70 und 75 und den Kreuzungsstellen 90 und 95 ein.
- Nachdem die unterschiedlichen Operationen in Antwort auf die Anfrage für ein erneutes Versuchen durchgeführt sind, erzeugt ein Generator 2240 zum lokalen weichen Rücksetzen in der primären Kreuzungsstelle 90 ein lokales weiches Rücksetzen (Schritt 2532) in Antwort auf die Anfrage für ein weiches Rücksetzen. In Antwort auf das lokale weiche Rücksetzen initiieren Generatoren 2610 und 2620 zum erneuten Versuchen in den jeweiligen Speichersteuerungen 70 und 75 erneut die Hängebustransaktion (Schritt 2534). Wenn die erneut versuchte Busoperation erfolgreich ist und kein Fehlersignal empfangen wird (Schritt 2536), dann wird die hardwaremäßige Fehlerverarbeitung für einen CPU-I/O-Fehler beendet (Schritt 2525).
- Wenn ein Fehlersignal durch die Speichersteuerungen 70 und 75 empfangen wird, werden ähnliche hardwaremäßige Operationen implementiert, wie sie implementiert wurden, als das erste Fehlersignal empfangen wurde. Ein Diagnose- Fehlerregister 880 wird eingestellt und der Fehlercode wird erzeugt (Schritt 2538); das Fehlersignal wird verteilt, die Systemfehlerunterbrechung wird postiert, die Ablaufverfolgungs-RAMs werden eingefroren und die Anfrage für ein erneutes Versuchen wird gesendet (Schritt 2539); und der Ausfallpegel wird inkrementiert, das Systemausfall-Fehleradressenregister wird eingefroren und eine Anfrage für ein weiches Rücksetzen wird gesendet (Schritt 2540). Da die meisten dieser Operationen schon ausgeführt worden sind, wird es keine Änderung bezüglich der Ablaufverfolgungs-RAMs, der Fehleradressen- und der Diagnose-Fehlerreggister geben. Der Ausfallpegel wird jedoch auf seinen höchsten Pegel inkrementiert worden sein, der anzeigt, daß es im Computersystem einen "festen Ausfall" gibt. Dies ist deshalb so, weil der Fehler nach einem nochmaligen Versuchen einer Busoperation erfaßt wird und ein fester Ausfall auftritt, wenn ein Fehler während eines nochmaligen Versuchens erfaßt wird. Dann wird vor einem Verlassen der hardwaremäßigen Fehlerbearbeitungsroutine für einen CPU-I/O-Fehler 2500 ein weiches Rücksetzen durchgeführt (Schritt 2542).
- Zum Beenden der durch die CPUs 40 und 50 durchgeführten Operation, so daß eine Unterbrechung für eine unten erörterte softwaremäßige Fehlerbearbeitung genommen werden kann, wird ein Test durchgeführt, um zu sehen, ob eine Leseoperation ausgeführt wurde, als der Fehler erfaßt wurde (Schritt 2544). Wenn es so ist, wird eine Vorgabenoperation durchgeführt (Schritt 2546). Die Vorgabenoperation besteht aus einem Versorgen des CPU-Moduls 30 mit konsistenten Daten, wie beispielsweise nur Nullen, so daß die aktuell ausführende Operation ohne ein Risiko eines Fehlschlags aufgrund einer Schienendatendivergenz beendet werden kann.
- Fig. 29 stellt das Verfahren 2900 zum Beheben eines DMA-Fehlers dar. Die Ablauffolge der Operationen, die auf der Hardwareebene stattfinden (Schritt 2910), ist ähnlich jener, die in bezug auf die CPU-I/O-Fehlerbehebungsablauffolge erörtert wurde. Die hardwaremäßige Antwort auf einen DMA-Fehler (Schritt 2910) enthält ein Postieren einer Systemfehlerunterbrechung, ein Postieren einer DMA- Unterbrechung, ein Einfrieren der Ablaufverfolgungs-RAMs und ein Stoppen der DMA.
- Zuerst wird die DMA gestoppt, um eine Zerstörung von Daten im System 10 zu verhindern. Ein Postieren der Systemfehlerunterbrechnung zeigt dem System an, daß eine Unterbrechungsverarbeitungsroutine durchgeführt werden sollte, so daß eine vollständige Behebung des Fehlers durchgeführt werden kann. Ein Postieren der DMA-Unterbrechung ruft eine DMA-Bearbeitungseinheit in einer Software auf, um eine Prüfung ihrer eigenen Operationen zu initiieren. Die Ablaufverfolgungs- RAMs werden auch eingefroren, so daß eine softwaremäßige Fehlerbearbeitung dazu befähigt wird, die Quelle des Ausfalls zu lokalisieren.
- Selbst wenn die DMA gestoppt ist, wird dem Rest des Systems erlaubt, eine normale Operation fortzuführen. Jedoch kann eine fortgeführte Operation des Systems, wenn die DMA gestoppt worden ist, in zusätzlichen Fehlern resultieren, wie beispielsweise CPU-I/O-Fehlern aufgrund eines Bus-Zeitablaufs, da die Zone mit einer nichtarbeitenden DMA-Maschine keine I/O-Operationen ausführen kann.
- Nachdem die hardwaremäßige Antwort auf einen DMA-Fehler erfolgt ist, ist die DMA-Fehlerbehebungsablauffolge beendet (Schritt 2920). Ein weiteres Verarbeiten des DMA-Ausfalls und eine Wiederaufnahme der Operation der DMA muß softwaremäßig erfolgen. Das softwaremäßige Fehlerbearbeitungsschema, das durch die CPUs 40, 50 und 40', 50' ausgeführt wird, ist unten erörtert.
- Der dritte Fehlertyp, der primär hardwaremäßig bearbeitet wird, ist der CPU/MEM- Ausfall. Fig. 30 stellt ein CPU/MEM-Ausfall-Fehlerbearbeitungsverfahren 3000 dar.
- Wenn die Fehlersignale für einen CPU/MEM-Ausfall empfangen werden, breiten sie sich durch eine Diagnose-Fehlerreggisterlogik 879 und durch eine Fehlerkategorisierungslogik 850 in der Speichersteuerung aus, die den Fehler erfaßte. Die Fehlerkategorisierungslogik 850 postiert dann ein CPU/MEM-Ausfallsignal, das durch einen Codierer 855 in einen Zwei-Bit-Fehlercode codiert wird, der einen CPU/MEM-Ausfall anzeigt. Der Zwei-Bit-Fehlercode wird über ein UND-Gatter 856 zu den Kreuzungsstellen 90 und 95 gesendet.
- Das Postieren des CPU/MEM-Ausfalls (Schritt 3010) verursacht ein Postieren einer Systemfehlerunterbrechung, ein Inkrementieren des Ausfallpegels, ein Einfrieren des Systemausfall-Fehleradressenregisters und ein Einfrieren der Ablaufverfolgungs-RAMs (Schritt 3020), was oben bei der Erörterung des CPU-I/O- Fehlerbearbeitungsprozesses 2500 beschrieben ist.
- Auf ein Erfassen eines CPU/MEM-Ausfalls hin, wird keine Anstrengung unternommen, die Operation erneut zu versuchen, da die Fähigkeit der aktuellen Zone, richtig zu arbeiten und daher irgendeinen Typ eines Fehlerbehebungsschemas zu implementieren, bestenfalls unsicher ist. Wenn die Kreuzungsstellen 90 und 95 einmal den Fehlercode empfangen, der einen CPU/MEM-Ausfall anzeigt, rekonfigurieren sie sich in die Slave-Betriebsart sofort selbst (Schritt 3025). Das System 10 wird nun derart angesehen, als ob es in einer verschlechterten Duplex- oder einer Master/Slave-Betriebsart arbeitet.
- Ein lokales weiches Rücksetzen (Schritt 3030) und ein Zonentaktrücksetzen (Schritt 3040) werden durchgeführt, und die hardwaremäßige Fehlerbehebung für einen CPU/MEM-Ausfall wird beendet (Schritt 3050).
- Es treten zwei Fehlerzustände auf, die dazu führen, daß zwei entsprechende Bits im Systemfehlerregister 898 gesetzt werden. Der erste ist ein NXM-(nichtexistenter Speicher)-Fehler, der einem Fehlen einer Antwort während einer Speicheroperation entspricht. Der zweite Fehlerzustand ist ein NXIO-(nichtexistente I/O-Vorrichtung)- Fehler, der einer fehlenden Antwort während einer I/O-Operation entspricht.
- NXM-Fehler werden softwaremäßig behoben, wie es unten erörtert ist. NXIO- Fehler gehören zum CPU-I/O-Fehlertyp und werden gemäß dem CPU-I/O- Bearbeitungsprozeß 2500 hardwaremäßig bearbeitet.
- Ein NXIO-Bit und ein NXM-Bit (siehe Fig. 9) werden für entsprechende NXM- und NXIO-Fehler erfaßt. Wenn das NXM-Bit gesetzt ist, wird die DMA 800 gesperrt, was einen Zugriff auf die I/O durch das System 10 verhindert.
- Bei jeder der drei Typen einer hardwaremäßigen Fehlerbehebung wird ein softwaremäßiger Fehlerbearbeitungsprozeß nach den hardwaremäßigen Fehlerbehebungsverfahren verwendet, um die Ursache und den Ort des Fehlers zu erfassen, wenn es möglich ist. Zusätzlich kann die softwaremäßige Fehlerbearbeitung bestimmen, daß es keinen Ausfall gibt und daß das System erneut in einer normalen vollständigen Duplex-Betriebsart gestartet werden kann. Andererseits kann während einer softwaremäßigen Fehlerbearbeitung bestimmt werden, daß ein Modul schlecht ist, und das Modul wird entsprechend markiert.
- Das gesamte hardwaremäßige Fehlerbehebungsschema minimiert die Zeit, die zur Fehlerbehebung verwendet wird, und zwar durch Zulassen, daß das System eine Operation nach einem Übergangsausfall im CPU-I/O-Fehlerbearbeitungsprozeß 2500 fortführt Zusätzlich wird ein zu einer Fehlerverarbeitung gehörender Systemzusatzaufwand dadurch minimiert, daß nicht versucht wird, eine Erholung von CPU/MEM-Ausfällen zu bieten. Die Fähigkeit des Systems 10, sich von einem CPU/MEM-Ausfall zu erholen, würde zum Zulassen einer Erholung von einem Fehler einen Zeitaufwand mit sich bringen, der beim bevorzugten Ausführungsbeispiel die Systemleistungsfähigkeit ernsthaft verschlechtert.
- Zum Initiieren einer softwaremäßigen Fehlerbearbeitung muß das Computersystem 10 je nach Eignung eine Systemfehlerunterbrechung oder eine DMA- Unterbrechung (nicht gezeigt) durchführen. Die Unterbrechungen werden anstelle aufwendigerer Mittel verwendet, wie beispielsweise einer Maschinenprüfung, um zuzulassen, daß das System 10 die aktuelle Busoperation beendet. Eine Maschinenprüfung führt dazu, daß eine sofortige Handlung unternommen wird und kann ein System mitten in einer Busoperation stoppen. Wie es in bezug auf eine hardwarem- ßige Fehlerbearbeitung kurz erzärtert ist, kann es nötig sein, daß eine Vorgabeninformation erzeugt wird, um eine Busoperation zu beenden.
- Wenn das System 10 Unterbrechungen annimmt, dann initiiert es ein softwaremäßiges Fehlerbearbeitungsverfahren, wie beispielsweise das Verfahren 3100 in Fig. 31. Das Computersystem 10 arbeitet bei einem gegebenen Unterbrechungsprioritätspegel (IPL), der geändert werden kann. Der IPL bezeichnet den Prioritätspegel, auf dem eine Unterbrechung postiert sein muß, um aktuelle Computersystemoperationen zu unterbrechen. Wenn eine Unterbrechung mit einem IPL erzeugt wird, der derselbe oder niedriger als der IPL ist, auf dem das Computersystem 10 gerade läuft, dann wird keine Unterbrechung durchgeführt. Beim bevorzugten Ausführungsbeispiel ist die Systemfehlerunterbrechung die Unterbrechung mit der höchsten Priorität.
- Wie es auch bei anderen Beispielen gemacht ist, wird die softwaremäßige Fehlerbearbeitung allgemein in bezug auf die Operation der Komponenten in der Zone 11 beschrieben, wobei zu verstehen ist, daß dann, wenn das System 10 in der Verriegelungsschritt-Betriebsart funktioniert, gleiche Operationen durch die Zone 11' durchgeführt werden. Wenn das System 10 die Systemfehlerunterbrechung nimmt (Schritt 3110), initiiert das System 10 eine weiche Rücksetzung (Schritt 3112). Das System 10 versucht dann, die verschiedenen Fehlerregister zu lesen, die in den Speichersteuerungen 70, 75, 70' und 75' und in den Kreuzungsstellen 90, 95, 90' und 95' angeordnet sind (Schritt 3114). Die Speichersteuewngs- und Kreuzungsstellen-Fehlerregister, von denen einige nicht gezeigt sind, speichern Information, die bei einer softwaremäßigen Fehlerverarbeitung verwendet wird. Zwei derartige Fehlerregister sind ein Systemausfall-Fehlerregister 898 und ein Systemausfall- Fehleradressenregister 865. Diese sind im Zonenadressenraum angeordnet und sollten für jede Zone identische Information enthalten. Im Fall eines CPU/MEM- Ausfalls ist jedoch das Systemausfall-Fehlerregister der zwei Zonen unterschiedlich. Dieser Unterschied zwischen den Inhalten der Register in den zwei Zonen kann nur toleriert werden, wenn die Datenverarbeitungssysteme 20 und 20' nicht mehr im Verriegelungsschritt sind und das System 10 in einer verschlechterten Duplex- oder Master/Slave-Betriebsart läuft.
- Daher wird die Zone dann, wenn die Daten von bei einer Fehleranalyse verwendeten Registern nicht konsistent sind (Schritt 3116), was bedeutet, daß es einen erfaßten Fehler oder einen Fehlvergleich gibt, die nichtkonsistente Fehlerdaten erfassen, einen CPU/MEM-Ausfall einstellen, was dazu führt, daß in das hardwaremäßige Fehlerbehebungsverfahren 3000, das in Fig. 30 dargestellt ist, eingetreten wird (Schritt 3118). Dieser Zustand tritt dann auf, wenn es in der Fehlerlogik auftrat, und dieser Ansatz resultiert darin, daß das ausgefallene Element vom System 10 entfernt wird.
- Wenn die Fehlerinformation konsistent ist (Schritt 3116), fährt die softwaremäßige Fehlerbearbeitung fort, wobei das System 10 die Art des Ausfalls identifiziert (Schritt 3122), um zu bestimmen, welche Fehlerbearbeitungseinheit anzuwenden ist. Zum Identifizieren des Fehlertyps werden Fehlerregister, wie beispielsweise das Systemausfall-Fehlerregister 898 und das Systemausfall- Fehleradressenregister 865, in den Speichersteuerungen 70 und 75 und Fehlerregister in den Kreuzungsstellen 90 und 95 (nicht gezeigt) analysiert. Zusätzlich muß ein NXM-Fehlerbit im Systemausfall-Fehlerregister 898 vor einem Zugreifen auf die Fehlerregister in den Kreuzungsstellen 90 und 95 geprüft werden, weil ein Zugriff auf die Kreuzungsstellen gesperrt ist, während das NXM-Bit gesetzt ist.
- Wenn der erfaßte Ausfall ein CPU-I/O-Fehlertyp war, wird in die CPU-I/O- Fehlerbearbeitungseinheit eingetreten (Schritt 3124); wenn der Ausfall ein CPU/MEM-Ausfall ist, wird in die CPU/MEM-Ausfallbearbeitungseinheit eingetreten (Schritt 3126); wenn ein Taktfehler erfaßt wird, wird in die Taktfehlerbearbeitungseinheit eingetreten (Schritt 3128); und wenn ein nichtexistenter Speicher (NXM) erfaßt wird, wird in die NXM-Bearbeitungseinheit eingetreten (Schritt 3130). Der CPU-I/O-Fehler und die CPU/MEM-Ausfälle sind oben in bezug auf eine hardwaremäßige Fehlerbearbeitung beschrieben. Nur für eine softwaremäßige Fehlerbearbeitung enthalten die CPU-I/O-Fehler DMA-Fehler. Ein NXM-Fehler ist ein Anzeichen dafür, daß der Speicher, auf den ein Zugriff versucht wurde, nicht vorhanden ist. Ein Taktfehler zeigt an, daß zwei Zonen nicht derart angesehen werden können, daß sie im Verriegelungsschritt laufen.
- Die CPU-I/O-Fehlerbearbeitungseinheit 3200, wie sie in Fig. 23 dargestellt ist, beginnt mit einem Lesen des Ablaufverfolgungs-RAM (Schritt 3210). Das Lesen des Ablaufverfolgungs-RAM muß nicht notwendig sein, aber es wird an dieser Stelle begonnen, weil es ein relativ langer Prozeß ist. Wie es im vorherigen Abschnitt erklärt ist, wurden die Ablaufverfolgungs-RAMs durch das globale Fehlersignal eingefroren. Die Daten von den Ablaufverfolgungs-RAMs werden dann durch einen Diagnose-Mikroprozessor 1100 auf die Ablaufverfolgungsbusse 1095 und 1096 und in den lokalen RAM 1060 im I/O-Modul 100 gelesen. Vollständige Gruppen von Ab- Iaufverfolgungs-RAM-Daten aus den Ablaufverfolgungs-RAMs beider Zonen werden durch die I/O-Module der beiden Zonen 11 und 11' gesammelt.
- Eine Analyse der Ablaufverfolgungs-RAM-Daten enthält ein Schauen auf ein Ab- Iaufverfolgungs-RAM-Zeichen. Wenn die Ablaufverfolgungs-RAM-Daten in die I/O- Module 100 und 100' nach unten gelesen werden&sub1; wird ein Ablaufverfolgungs- RAM-Zeichen als Kette von M Bits für jede Zone gebildet. M gleicht der Anzahl von Ablaufverfolgungs-RAMs auf jeder Schiene. Jedes Bit des Ablaufverfolgungs-RAM- Zeichens entspricht einem Paar von Ablaufverfolgungs-RAMs. Ein Ablaufverfolgungs-RAM-Paar sind zwei Ablaufverfolgungs-RAMs auf unterschiedlichen Schienen, die an derselben relativen Position angeordnet sind. In Fig. 27 würden beispielsweise Ablaufverfolgungs-RAM-Paare in der Zone 11 die Ablaufverfolgungs- RAMs 2700/2705, 2718/2728, 2715/2725 und 2710/2720 enthalten. Wenn ein Bit in einem Ablaufverfolgungs-RAM-Zeichen gesetzt ist, hat es einen Fehlvergleich zwischen Ablaufverfolgungs-RAMs in einem Paar gegeben.
- Als nächstes wird das NXIO-(nichtexistente I/O)-Bit im Fehlerstatusregister 898 untersucht (Schritt 3212). Wenn jenes Bit gesetzt ist, ist ein NXIO-Fehler aufgetreten, der einen Zeitablauf während eines Lesens zur I/O oder eines Schreibens von der I/O anzeigt. Wenn das NXIO-Bit nicht gesetzt ist (Schritt 3212), werden die Ablaufverfolgungs-RAMs analysiert, um beim Bestimmen der Vorrichtung zu helfen, in der der Fehler auftrat (Schritt 3214). Beispielsweise kann das System 10 dann, wenn das Ablaufverfolgungs-RAM-Zeichenbit entsprechend dem Ablaufverfolgungs-RAM-Pfad 2700/2705 gesetzt ist, bestimmen, daß das I/O-Modul entsprechend den Firewalls 1000 und 1010 die Quelle des Fehlers ist.
- Nachdem die Vorrichtung, die die Quelle des Fehlers ist, bestimmt worden ist, kann das System nun ein Hauptverfahren für die fehlerhafte Vorrichtung bilden (Schritt 3220). Dieses Hauptverfahren enthält ein Verwenden der Fehlerinformation, die in verschiedenen Fehlerregistern gespeichert ist, z.B. dem Systemausfall- Fehleradressenregister 865, und die Ablaufverfolgungs-RAM-Analyse zum Identifizieren der spezifischen fehlerhaften Vorrichtung. Wenn das System einmal die fehlerhafte Vorrichtung identifiziert hat, wird bestimmt, ob der Fehler ein fester Ausfall oder ein periodisch auftretender Ausfall ist. Zum Bestimmen, ob ein Ausfall fest ist, werden die ersten zwei Bits des Systemausfall-Fehlerregisters 898 analysiert.
- Wenn der Ausfall periodisch auftritt, wird eine auf einer Häufigkeit basierende Schwellenbildung durchgeführt, um zu bestimmen, ob die angezeigte Vorrichtung derart angesehen werden sollte, daß sie ausgefallen ist, oder nicht (Schritt 3224). Eine auf einer Häufigkeit basierende Schwellenbildung enthält ein Vergleichen der Anzahl periodisch auftretender Fehler, die über eine gegebene Zeitperiode in einer fehlerhaften Vorrichtung aufgetreten sind, mit einer vorbestimmten Schwelle für jene Vorrichtung. Wenn die Anzahl von Fehlern pro Einheitszeit für eine Vorrichtung größer als eine vorbestimmte Schwelle ist (Schritt 3224), dann wird die Einheit derart angesehen, als ob sie fehlerhaft ist. Wenn die Anzahl von Fehlern pro Einheitszeit nicht größer als die Schwelle ist (Schritt 3224), dann werden die Hauptfunktionen der softwaremäßigen Fehlerbearbeitung beendet und es werden Schritte zum Verlassen des softwaremäßigen Fehlerbearbeitungsverfahrens 3200 unternommen.
- Wenn die Anzahl periodisch auftretender Ausfälle zu groß ist oder der Ausfall ein fester Ausfall ist, wird eine Ausfallvorrichtungs-Bearbeitungseinheit aufgerufen (Schritt 3226).
- Fig. 33 stellt ein Ausfallvorrichtungs-Bearbeitungseinheitsverfahren 3300 dar. Zuerst wird eine geeignete Ausfallinformation im EEPROM des ausgefallenen Moduls gespeichert (Schritt 3310). Eine solche Information kann Bits enthalten, die anzeigen, daß das entsprechende Modul zerstört ist oder zerstört sein kann. Die gespeicherte Information kann ebenso eine bestimmte Statusinformation enthalten.
- Zum Minimieren der Auswirkungen eines Vorrichtungsfehlers wird eine virtuelle Adresse der ausgefallenen Vorrichtung auf eine physikalische Adresse abgebildet, die das "schwarze Loch" genannt wird (Schritt 3314). Das "schwarze Loch" ist ein physikalischer Adressenraum, der tatsächlich einer Vorrichtung entspricht, zu der Daten gesendet werden können, ohne daß sie Fehler im System erfahren, und die bei einer Leseoperation eine vorbestimmte Gruppe von Daten, die vorzugsweise nur Nullen sind, zurückbringt. Die Abbildung wird beim bevorzugten Ausführungsbeispiel unter Verwendung einer Systemadressen-Umwandlungstabelle durchgeführt, die eine Auflistung der virtuellen Adressen und entsprechender Systemadressen für die Vorrichtungen im System 10 enthält.
- Fig. 34 stellt ein Beispiel einer Systemadressen-Umwandlungstabelle 3400 dar, die vorzugsweise in den Speichermatrizen 600 und 600' gespeichert ist.
- Die Systemumwandlungstabelle 3400 enthält ein virtuelles Adressenfeld 3410 und ein physikalisches Adressenfeld 3420. Die Software verwendet die Systemadressen-Umwandlungstabelle 3400 zum Umsetzen oder Abbilden einer virtuellen Adresse einer Vorrichtung auf ihre physikalische Adresse. Zusätzlich verwenden die I/O-Treiberroutinen die virtuelle Adresse zum Identifizieren einer entsprechenden I/O-Vorrichtung. Ein Abändern der Systemadressen-Umwandlungstabelle 3400 für eine Vorrichtung ändert somit effektiv das schließliche Endziel für Daten, die zu der virtuellen Adresse adressiert sind, die der I/O-Vorrichtung formal entspricht.
- Nachdem das Abbilden beendet ist, ist der nächste Schritt in der Ausfallvorrichtungs-Verarbeitungseinheit ein Löschen eines Flags für einen vorhandene Vorrichtung in einer Softwaretabelle, die in der Speichermatrix 600 enthalten ist (Schritt 3316). Der Zweck des Löschens des Flags besteht im Mitteilen zum Vorrichtungstreiber entsprechend der ausgefallenen Vorrichtung, daß die Vorrichtung als ausgefallen angesehen wird.
- Nachdem das Flag für eine vorhandene Vorrichtung gelöscht worden ist, führt das System eine Benachrichtigung über die erforderliche Reparatur durch (Schritt 3318). Diese Benachrichtigung sendet beim bevorzugten Ausführungsbeispiel eine Nachricht zu einem geeigneten Reparaturpersonal. Bei einem Ausführungsbeispiel kann diese Nachricht über ein Modem zu einem Servicepersonal an einer entfernten Stelle gesendet werden.
- Die Auswirkung des Ausfallvorrichtungs-Bearbeitungseinheitsverfahrens 3300 kann durch Untersuchen der Leistungsfähigkeit eines Vorrichtungstreibers abgeschätzt werden.
- Fig. 35 stellt ein Beispiel eines Vorrichtungstreibers 3500 dar, der ein ausführbarer Block von Befehlen ist, die eine Reihe von I/O-Befehlen enthalten, die durch die entsprechende Vorrichtung durchzuführen sind. Selbst dann, wenn die Vorrichtung ausgefallen ist, fährt der Vorrichtungstreiber fort, normal zu arbeiten und die I/O- Befehle auszuführen. Da der I/O-Vorrichtungsadressenraum auf das "schwarze Loch" für die ausgefallene Vorrichtung abgebildet worden ist, wird die fortgeführte Ausführung von Befehlen keinerlei zusätzliche Ausfälle erzeugen. Alle Vorrichtungstreiber werden einen Befehl 3510 für ein "Prüfen auf eine vorhandene Vorrichtung" enthalten. Dieser Befehl prüft das Bit für eine vorhandene Vorrichtung für die entsprechende I/O-Vorrichtung. Wenn das Bit für eine vorhandene Vorrichtung gelöscht ist, dann wird die Vorrichtung als ausgefallen angesehen und der Treiber sperrt sich selbst auf eine ordentliche Weise.
- Genau vor dem Befehl 3510 für ein "Prüfen auf eine vorhandene Vorrichtung" gibt es einen Befehl 3520 zum Löschen der Pipeline. Der Befehl zum Löschen der Pipeline stellt sicher, daß alle anhängigen I/O-Befehle beendet sind, so daß ein Fehler in einem direkt vorangehenden Befehl aufgrund von Pipelineverzögerungen nicht vermißt wird. Ein Beispiel eines Befehls für ein "Löschen der Pipeline" ist ein Lesen aus einem Speichersteuerungsregister. Die Fähigkeit zum Ausführen einer Reihe von Befehlen vor einem Prüfen, ob die Vorrichtung als ausgefallen angesehen wird, bringt Einsparungen bezüglich zusätzlicher Software mit sich, weil sie vermeidet, nach jeder Operation Prüfungen durchzuführen.
- Die in Fig. 32 dargestellte CPU-I/O-Fehlerbearbeitungseinheit bildet eine Anzahl von Haushaltungsoperationen nach einem Anregen der Bearbeitungseinheit 3100 für eine ausgefallene Vorrichtung (Schritt 3226), nach einem Bestimmen, daß die Vorrichtung mit dem Fehler nach einem Schwellenbilden nicht als ausgefallen angesehen wird (Schritt 3224) oder nach einem Durchführen eines Zusammenbruchs (Schritt 3232). Die Haushaltungsoperationen enthalten ein Rücksetzen des Ablaufverfolgungs-RAMs und der Fehlerregister (Schritt 3228) und ein Protokollieren des Fehlers (Schritt 3230).
- Nimmt man wieder Bezug auf den softwaremäßigen Fehlerbearbeitungsablauf der Fig. 31 wird dann, wenn der Fehlertyp als CPU/MEM-Ausfall bestimmt wird (Schritt 3122), in eine CPU/MEM-Ausfallbearbeitungseinheit eingetreten (Schritt 3126). Fig. 36 stellt ein Beispiel einer CPU/MEM-Ausfallbearbeitungseinheit dar.
- Die CPU/MEM-Ausfallbearbeitungseinheit 3600 ist ein einfaches softwaremäßiges Verfahren, in das in allen Fällen eingetreten wird, wo ein CPU/MEM-Ausfall als aufgetreten bestimmt wird, und für den eine zuverlässige Operation der CPUs oder des Speichermoduls unbekannt ist. Demgemäß kann für ein System, das einen CPU/MEM-Ausfall hat, eine wenig zuverlässige Fehlerverarbeitung erreicht werden. Nachdem in den CPU/MEM-Ausfall eingetreten ist, versucht das fehlerhafte CPU-Modul, seine internen Fehlerregister (nicht gezeigt) zum geeigneten EEPROM, wie beispielsweise einem EEPROM 1055, zu bewegen (Schritt 3612). Die zum EEPROM 1055 bewegten Fehlerregister können sehr gut schieneneindeutige Daten enthalten, weil einem Anzeigen eines CPU/MEM-Ausfall- Fehlerberichtens nicht immer eine Gelegenheit gegeben wird, sich zu beiden Schienen auszubreiten, und das System wird während einer hardwaremäßigen Fehlerverarbeitung möglichst schnell heruntergefahren.
- Nachdem das fehlerhafte CPU-Modul versucht, die Fehlerregister in seine EE- PROMS zu bewegen (Schritt 3612), tritt das fehlerhafte CPU-Modul sofort in die Konsolen-Betriebsart ein (Schritt 3614), und die CPU/MEM- Ausfallbearbeitungseinheit 3600 wird beendet (Schritt 3616).
- In der softwaremäßigen Fehlerbearbeitungsroutine wird dann, wenn der Fehlertyp als Taktfehler bestimmt wird (Schritt 3122), in eine Taktfehlerbearbeitungseinheit eingetreten (Schritt 3128). Ein Beispiel einer Taktfehlerbearbeitungseinheit ist in Fig. 37 als Verfahren 3700 dargestellt.
- Wenn ein Taktfehler aufgetreten ist, wird angenommen, daß keine genaue Diagnose oder Fehleranalyse erreicht werden kann, weil die Takte nicht synchronisiert wurden, als der Fehler auftrat. Daher werden die Fehlerregister gelöscht (Schritt 3710) und die Ablaufverfolgungs-RAMs werden durch Deaktivieren des globalen Fehlersignals aufgefroren (Schritt 3716). Eine beliebige Zone, die einen Taktfehler findet, stellt sich selbst auf einen Takt-Master ein (Schritt 3718).
- Die Zone, die einen Taktfehler findet, führt dann eine Prüfung aus, um zu sehen, ob in der anderen Zone das Kabel installiert und die Leistung eingeschaltet ist. Wenn das Kreuzungsstellenkabel 25 installiert ist (Schritt 3720) und die andere Zone keine Leistung hat (Schritt 3725), dann wird ein Taktfehler auf normale Weise protokolliert (Schritt 3730), und die Zone arbeitet weiter. Wenn das Kreuzungsstellenkabel 25 nicht installiert ist (Schritt 3720) oder installiert ist, aber die andere Zone Leistung hat (Schritt 3725), dann fragt die Zone, ob es die Zone ist, die zum Fortführen der Operation unter diesen Bedingungen vorausgewählt ist (Schritt 3735). Wenn es so ist, dann wird der Taktfehler protokolliert (Schritt 3730), und die Zone arbeitet weiter. Wenn die Zone nicht die vorausgewählte Zone ist (Schritt 3735), dann tritt sie in die Konsolen-Betriebsart ein (Schritt 3740).
- Wenn der Fehlertyp der softwaremäßigen Fehlerbearbeitungsroutine als Fehler eines nichtexistierenden Speichers (NXM) bestimmt wird (Schritt 3122), dann wird in die NXM-Bearbeitungseinheit eingetreten (Schritt 3130). Der NXM-Fehler kann erfaßt werden, wenn das NXM-Bit im in Fig. 9 dargestellten Systemausfall- Fehlerregister 898 gesetzt ist. Das NXM-Bit im Systemausfall- Fehleradressenregister 898 wird bei zwei Zuständen gesetzt. Einer davon tritt dann auf, wenn es einen unrichtigen Befehl gibt, den das System auszuführen versuchte. Ein anderer tritt dann auf, wenn ein NXM-Fehler aufgrund einer fehlenden Antwort vom Speichermodul 60 erfaßt wurde.
- Ein Beispiel eines Verfahrens 3800 zum Bearbeiten von NXM-Fehlern ist in Fig. 38 dargestellt. Nachdem in die NXM-Bearbeitungseinheit eingetreten ist (Schritt 3130), wird zuerst bestimmt, ob ein unrichtiger Befehl versucht wurde (Schritt 3810). Wenn das NXM-Bit gesetzt war, weil es einen unrichtigen Befehl gab, dann wird in die Konsolen-Betriebsart eingetreten (Schritt 3812), und das NXM-Bit wird deaktiviert (Schritt 3831) und die NXM-Bearbeitungseinheit wird beendet (Schritt 3832).
- Wenn es einen aktuellen NXM-Fehler gab, wird das Systemausfall- Fehleradressenregister 865 gelesen (Schritt 3820). Das Systemausfall- Fehleradressenregister 865 enthält die Adresse der Speicherstelle in der Speichermatrix. Der nächste Schritt ist ein Vergleichen der Speicheradresse mit den gültigen Speicherstellen, die in einer Speicherkarte aufgelistet sind (Schritt 3826). Der Zweck dieses Vergleichs ist ein Unterscheiden von Hardwarefehlern und Softwarefehlern.
- Es gibt drei unterschiedliche Situationen, in denen ein NXM-Fehler erfaßt wird. Die erste Situation ist die, wo das System hochgefahren wird und der Speicher derart dimensioniert ist, daß er die Speicherabbildung bildet. Während eines Hochfahrens ergründet die Software gültige und ungültige Speicherstellen in der Speichermatrix 600. Zum Vermeiden, daß diese Situation einen Fehler verursacht, wird ein Berichten auch während eines Prüfens des Speichers zur Hochfahrzeit durch Anheben des System-IPL während eines Speicherprüfens gesperrt. Dann wird nicht in die NXM-Fehlerbearbeitungseinheit eingetreten.
- Die zweite Situation, in der ein NXM-Fehler erfaßt wird, ist diejenige, wenn das Speichermodul 60 einen Hardwareausfall erfahren hat, der einen bestimmten Teil der Speichermatrix 600 sperrte, obwohl jener Teil gültig war, als die Speicherabbildung gebildet wurde. Dies kann beispielsweise dann passieren, wenn eine der Speichermatrizenkarten während einer Operation einfach vom System entfernt wird. Dies ist ein Hardwareausfall und macht eine zuverlässige Operation des entsprechenden CPU-Moduls unmöglich.
- Die dritte Situation, in der ein NXM-Fehler auftritt, ist diejenige, wenn eine Software eine ungültige Speicheradresse erzeugt. In dieser Situation ist die Software fehlerhaft.
- Diese drei Fälle sind in der vorliegenden Situation unterscheidbar. Wie es oben beschrieben ist, wird die erste Situation durch kein Eintreten in die NXM- Fehlerbearbeitungseinheit unterschieden. Die nächsten zwei Situationen werden durch Prüfen der Speicheradresse unterschieden, wenn der NXM-Fehler erfaßt wurde, mit den gültigen Speicherstellen und der Speicherabbildung (Schritt 3826). Wie es gesehen werden kann, wird dann, wenn das Speichermodul einer Zone einen Hardwareausfall hatte und die gegenwärtige Speicherstelle eine gültige Stelle in der Karte bzw. Abbildung war, aber aus irgendeinem Grund nicht länger gültig ist, ein CPU/MEM-Ausfall erzwungen (Schritt 3828). Auf diese Weise kann die gegenwärtig ausführende Aufgabe fortgeführt ausgeführt werden, da der CPU/MEM-Ausfall eine hardwaremäßige Fehlerverarbeitungsroutine veranlaßt, das System für eine fortgeführte Operation in der verschlechterten Duplex- oder Master/Slave-Betriebsart zu rekonfigurieren.
- Jedoch bestimmt das System dann, wenn bestimmt wird, daß die gegenwärtige Speicherstelle eine ungültige Stelle war und nicht in der gültigen Speicherabbildung vorhanden war, daß die Software fehlerhaft ist, dem ein Abbrechen folgt, und ein Fehlerprotokollieren wird durchzuführen sein (Schritt 3830). Nachdem diese zwei Fälle berücksichtigt sind (Schritte 3828 und 3830), wird das NXM-Bit deaktiviert (Schritt 2931), und die NXM-Fehlerbearbeitungseinheit wird angeregt (Schritt 3832). Nachdem das NXM-Bit deaktiviert ist, wird ein Zugriff auf die I/O-Vorrichtung zugelassen, wie es oben erörtert ist.
- Bei jedem der drei Typen einer hardwaremäßigen Fehlerbehebung wird nach den hardwaremäßigen Fehlerbehebungsverfahren ein softwaremäßiger Fehlerbearbeitungsprozeß verwendet, um die Ursache oder die Stelle des Fehlers zu erfassen, wenn es möglich ist. Zusätzlich kann die softwaremäßige Fehlerbearbeitung bestimmen, daß es keinen Ausfall gibt, und daß das System in einer normalen vollständigen Duplex-Betriebsart erneut gestartet werden kann. Andererseits kann während einer softwaremäßigen Fehlerbearbeitung bestimmt werden, daß ein Modul schlecht ist, und das Modul wird entsprechend markiert.
- Zusammenfassend wird dadurch, daß zugelassen wird, daß das System 10 eine softwaremäßige Fehlerbehebung nur dann durchführt, wenn durch das System 10 ein Unterbrechungszyklus erreicht wird, der Einfluß auf Operationen minimiert, die während einer Erfassung eines Fehlers ausführen. Die hardwaremäßige Fehlerbehebung ermöglicht diese Durchlässigkeit einer Fehlerverarbeitung zu normalen Ausführungsdaten, die Befehle verarbeiten. Ein Abbilden von I/O-Vorrichtungen zu einem "schwarzen Loch" und ein dadurch erlangtes Zulassen, daß die Vorrichtungstreiber eine Anzahl von I/O-Befehlen vor einem Prüfen auf einen Fehler beenden, minimiert einen zusätzlichen Aufwand, der benötigt wird, um sicherzustellen, daß I/O-Operationen richtig und nicht ungeeignet unterbrochen durchgeführt werden, wenn zusätzliche Fehler nach einem ersten erfaßten Fehler erfaßt werden.
- Unter bestimmten Bedingungen der Fehlerverarbeitung im fehlertoleranten Computersystem 10 werden Daten erzeugt, die für eine einzelne Schiene der Zonen 11 oder 11' eindeutig sind. Beim bevorzugten Ausführungsbeispiel der Erfindung können schieneneindeutige Daten in einem Diagnose-Fehlerreggister 880 nach einem CPU/MEM-Ausfall gespeichert werden. Schieneneindeutige Daten sind jedoch nicht auf das Diagnoseregister 880 beschränkt. Während einer Diagnosefehleranalyse werden schieneneindeutige Daten in einer Vielzahl von Stellen in Abhängigkeit von den Registern erzeugt, die getestet werden.
- Wenn die Datenverarbeitungssysteme 20 oder 20' ein Bewegen der schieneneindeutigen Daten von einer Stelle zu einer anderen oder ein Verwenden von ihnen auf irgendeine Weise versuchen, signalisiert die normale Fehlererfassungsschaltung, wie beispielsweise die Datenvergleichsschaltung 1000' und 1010', einen Fehler, weil die Daten nicht auf jeder Schiene identisch sind. Somit wird ein Mechanismus dafür benötigt, zu vermeiden, daß während einer solchen Übertragung ein Fehler verursacht wird.
- Weiterhin sind, wenn einmal schieneneindeutige Daten in Daten umgewandelt worden sind, die für eine Zone gemeinsam sind, sie noch nicht durch das fehlertolerante System 10 verwendbar, da es eine fehlende Übereinstimmung zwischen den Daten in den Zonen 11 und 11' geben würde. Zum Analysieren dieser Daten müssen sie weiter in Systemdaten umgewandelt werden, so daß es eine konsistente Kopie der Daten gibt, die in jedem der Datenverarbeitungssysteme 20 und 20' vorhanden sind. Diese Umwandlung von Daten muß auch derart erfolgen, daß die vier CPUs 40, 50, 40', 50' in einer Verriegelungsschritt-Synchronisierung laufen.
- Die Umwandlung der schieneneindeutigen Daten in zoneneindeutige Daten wird unter Bezugnahme auf die Zone 11 und das Datenverarbeitungssystem 20 zum Zwecke einer Darstellung beschrieben, wobei zu verstehen ist, daß analoge Verfahren durch das Datenverarbeitungssystem 20' in der Zone 11' ausgeführt werden können.
- Beim bevorzugten Ausführungsbeispiel der Erfindung wird beim Verfahren zum Umwandeln von schieneneindeutigen Daten in Systemdaten, wie es in Fig. 39 dargestellt ist, der Unterbrechungsprioritätspegel (IPL) des Computersystems 10 über den Pegel angehoben, auf dem Fehlvergleichsfehler dazu führen, daß eine softwaremäßige Fehlerverarbeitungsroutine ausgeführt wird (Schritt 3910). Auf diesem IPL wird das Computersystem 10 nur Unterbrechungen akzeptieren, die einen höheren Prioritätspegel als den Systemfehlerunterbrechungspegel haben.
- Das Fehlerberichtungssystem wird auch in den Speichersteuerungen 70 und 75 gesperrt (Schritt 3912). Ein Fehlerberichten in den Speichersteuerungen 70 und 75 wird durch Setzen eines Fehlersperrbits 878 im Speichersteuer-Statusregister 876 gesperrt, das eine Eingabe zum UND-Gatter 856 ist.
- Die schieneneindeutigen Daten an einem bestimmten Register, die für dieses Beispiel die Daten aus dem Diagnose-Fehlerreggister 880 sind, werden in die Hilfsregisterspeicher 45 und 55 von den Diagnose-Fehlerreggistern in entsprechenden Speichersteuerungen 70 bzw. 75 bewegt (Schritt 3914). Die Hilfsregisterspeicher 45 und 55 sind "oberhalb" der Speichersteuerungen 70 und 75 angeordnet, so daß die Daten aus den Registern in den Speichersteuerungen 70 und 75 nicht durch irgendwelche Fehlerprüfeinheiten laufen.
- Diese Daten in den Hilfsregisterspeichern 45 und 55 werden dann in das Speichermodul 60 nach unten bewegt. Zuerst wird eine Schreiboperation ausgeführt, bei der die Daten in den Hilfsregisterspeichern 45 und 55 in das Speichermodul 60 an einer ersten Stelle geschrieben werden (Schritt 3916). Die Systemvorgabenkonfiguration veranlaßt, daß die Daten in die adressierte Speicherstelle des Speichermoduls 60 aus der primären Schiene geschrieben werden. Diese Schreiboperation zu einer ersten Speicherstelle resultiert darin, daß Daten vom Hilfsregister 45 in das Speichermodul 60 gelesen werden.
- Die Daten aus dem Spiegel-Hilfsregisterspeicher 55 werden in das Speichermodul geschrieben, was zwei Operationen erfordert. Zuerst muß die Speicherbusaufteilung in der Speichersteuerung 75 freigegeben werden, und jene in der Speichersteuerung 70 muß gesperrt werden (Schritt 3918). Dies wird durch Setzen eines Spiegel-Bustreiberfreigabebits 879 im Speichersteuer-Statusregister 876 erreicht. Als nächstes wird dem Speichermodul 60 befohlen, den ECC für die Daten von der Spiegel-Speichersteuerung 75 auszuwählen (Schritt 3920).
- Dann wird eine weitere Operation ausgeführt, bei der die Daten in den Hilfsregisterspeichern 45 und 55 in eine zweite Speicherstelle geschrieben werden (Schritt 3922), die unterschiedlich von der Stelle ist, zu der zuerst von den Hilfsregisterspeichern 45 und 55 geschrieben wird (Schritt 3916). Diese Schreiboperation zu einer zweiten Speicherstelle veranlaßt, daß die Daten aus dem Hilfsregisterspeicher 55 in die zweite Speicherstelle im Speichermodul 60 geschrieben werden, da die Spiegelschiene als die Quelle von Daten für die Schreiboperation gewählt wurde (Schritt 3918 und Schritt 3920).
- Die Folge von Operationen hat schieneneindeutige Daten in zoneneindeutige Daten umgewandelt. Die Daten aus den Registern, die an jeweiligen Schienen der Zone 11 angeordnet sind, werden nun im Speichermodul 60 derart angeordnet, daß sie durch das Datenverarbeitungssystem 20 verwendet werden können, ohne Fehlvergleiche zu verursachen. Die Zonen können nun durch Löschen der spezifischen Stellen in den Hilfsregisterspeichern 45 und 55, die zuvor verwendet wurden (Schritt 3924), durch Auswählen der primären Schiene am Speichermodul 60 (Schritt 3926), durch Nichtauswählen der Spiegelschienenbustreiber in der Speichersteuerung 75, durch Rücksetzen des Spiegel-Bustreiberfreigabebits 879 (Schritt 3928), durch Löschen der geeigneten Fehler- und Diagnoseregister (Schritt 3930) und durch Erzwingen eines softwaremäßigen Rücksetzens in den Speichersteuerungen 70 und 75 (Schritt 3932) auf ihren normalen Zustand zurückgesetzt werden.
- Nachdem der IPL auf einen Pegel zurückgebracht ist, auf dem das System Unterbrechungen akzeptieren kann (Schritt 3934), ist das System 10 bereit zum Umwandeln der an zwei Adressen in jedem Speichermodul 60 und 60' gespeicherten zoneneindeutigen Daten in Daten, die durch das gesamte System verwendbar sind.
- Zum Transformieren der zoneneindeutigen Daten in Systemdaten wird ein Kommunikationsregister 906 verwendet. Das Kommunikationsregister 906 wird zum Halten eindeutiger Daten verwendet, die zwischen den Zonen auszutauschen sind. Wie es zuvor beschrieben ist, ist die Adresse des Kommunikationsregisters zum Schreiben in einem Zonenadressenraum. Somit können während einer Verriege- lungsschrittoperation beide Zonen gleichzeitig das Kommunikationsregister in ihren jeweiligen Zonen beschreiben. Die Adresse des Kommunikationsregisters zum Lesen ist jedoch im Systemadressenraum. Auf diese Weise können zwei Zonen bei einer Verriegelungsschrittoperation gleichzeitig zoneneindeutige Daten unter Verwendung der Kommunikationsregister lesen.
- Das Verfahren zum Umwandeln zoneneindeutiger Daten in Systemdaten ist in Fig. 40 als Verfahren 4000 dargestellt. Zuerst schreiben beide Datenverarbeitungssysteme 20 und 20' gleichzeitig die gewünschte Stelle aus ihren jeweiligen Speichermodulen in ihre jeweiligen Kommunikationsregister (Schritt 4010). Als nächstes schreiben beide Datenverarbeitungssysteme die Daten aus dem Kommunikationsregister 906 in die Speichermodule 60 und 60' (Schritt 4020). Dann schreiben beide Datenverarbeitungssysteme 20 die Daten aus dem Kommunikationsregister 906' in die Speichermodule 60 und 60' (Schritt 4030). Nun hat die gesamte Zone dieselben Daten.
- Wenn es viele Speichermodulstellen mit unterschiedlichen Daten gibt, wie es der Fall bei schieneneindeutigen Daten ist, wird das Verfahren 4000 für jede Stelle wiederholt.
Claims (20)
1. Verfahren zur Behebung von Fehlern, die in Datenverarbeitungsmodulen
eines Datenverarbeitungssystems auftreten, das eine Vielzahl einzeln
identifizierbarer Datenverarbeitungsmodule enthält, die zulassen, daß das
Datenverarbeitungssystem Datenverarbeitungsoperationen ausführt, wobei das
Verfahren folgende Schritte aufweist:
Erfassen des Vorhandenseins eines durch eines der
Datenverarbeitungsmodule während der Ausführung einer der
Datenverarbeitungsoperationen verursachten Fehlers; und
Durchführen einer Fehlerverarbeitungsroutine im
Datenverarbeitungssystem mit folgenden Unterschritten:
Identifizieren desjenigen Datenverarbeitungsmoduls, das den
erfaßten Fehler verursachte, als Fehlermodul,
und durch folgende weitere Schritte gekennzeichnet ist:
Identifizieren der Art des Fehlers,
aus der Art des Fehlers Bestimmen, ob das
Datenverarbeitungssystem eine Operation trotz des Vorhandenseins des Fehlers zuverlässig
weiterführen kann,
Sperren des Fehlermoduis von einer weiteren Operation mit dem
Datenverarbeitungssystem, wenn das Datenverarbeitungssystem aufgrund
des Fehlers die Operation nicht zuverlässig weiterführen kann,
Verhindern, daß das Fehlermodul zusätzliche Fehler verursacht,
ohne das Fehlermodul zu sperren, wenn das Datenverarbeitungssystem eine
Operation trotz des Fehlers zuverlässig weiterführen kann, und
Wiederaufnehmen einer Ausführung von
Datenverarbeitungsoperationen durch das Datenverarbeitungssystem entweder nach einem Sperren
des Fehlermoduis von einer weitere Operation mit dem
Datenverarbeitungssystem oder nach einem Verhindern, daß das Fehlermodul zusätzliche Fehler
verursacht.
2. Verfahren nach Anspruch 1, das weiterhin folgenden Schritt enthält:
Rekonfigurieren des Datenverarbeitungssystems, um das
Fehlermodul zu umgehen, nachdem das Fehlermodul von einer weiteren Operation mit
dem Datenverarbeitungssystem gesperrt worden ist.
3. Verfahren nach Anspruch 1, wobei der Schritt zum Sperren des Fehlermoduls
von einer weiteren Operation mit dem Datenverarbeitungssystem folgenden
Unterschritt enthält:
Sperren aller Signalpfade zwischen dem Datenverarbeitungssystem
und dem Fehlermodul.
4. Verfahren nach Anspruch 1, wobei das Fehlerhafte der
Datenverarbeitungsmodule ein CPU-Modul ist, das eine CPU enthält, und
wobei der Schritt zum Bestimmen, ob das Datenverarbeitungssystem
eine Operation trotz des Vorhandenseins des Fehlers zuverlässig
weiterführen kann, folgenden Unterschritt enthält:
Bestimmen, ob der Fehler durch das CPU-Modul verursacht wurde.
5. Verfahren nach Anspruch 4, wobei der Schritt zum Sperren des Fehlermoduls
von einer weiteren Operation mit dem Datenverarbeitungssystem, wenn das
Datenverarbeitungssystem eine Operation aufgrund des Fehlers nicht
zuverlässig weiterführen kann, folgenden Unterschritt enthält:
Sperren des CPU-Moduls, wenn der Fehler durch das CPU-Modul
verursacht wurde und der Fehler eine Fehlfunktion der CPU anzeigt.
6. Verfahren nach Anspruch 1, wobei das Fehlermodul der Module ein
Speichermodul ist, das einen Speicher enthält, und
wobei der Schritt zum Bestimmen, ob das Datenverarbeitungssystem
eine Operation trotz des Vorhandensein des Fehlers zuverlässig weiterführen
kann, folgenden Unterschritt enthält:
Bestimmen, ob der Fehler durch das Speichermodul verursacht
wurde.
7. Verfahren nach Anspruch 6, wobei der Schritt zum Sperren des Fehlermoduls
von einer weiteren Operation mit dem Datenverarbeitungssystem, wenn das
Datenverarbeitungssystem eine Operation aufgrund des Fehlers nicht
zuverlässig weiterführen kann, folgenden Unterschritt enthält:
Sperren des Speichermoduls, wenn der Fehler durch das
Speichermodul verursacht wurde und der Fehler eine Fehlfunktion des Speichers
anzeigt.
8. Verfahren nach Anspruch 1, wobei der Schritt zum Bestimmen, ob das
Datenverarbeitungssystem eine Operation zuverlässig weiterführen kann,
folgende Unterschritte enthält:
Vergleichen der Anzahl der Zeitpunkte, zu denen das Fehlermodul
einen Fehler verursacht hat, bis zu einer vorbestimmten Schwellenzahl, und
Annehmen, daß das Datenverarbeitungssystem eine Operation nicht
zuverlässig weiterführen kann, wenn die Anzahl der durch das Fehlermodul
verursachten Fehler die vorbestimmte Zahl überschreitet.
9. Verfahren nach Anspruch 1, wobei das Datenverarbeitungssystem einen
Speicher enthält, und
wobei der Schritt zum Verhindern, daß das Fehlermodul zusätzliche
Fehler verursacht, wenn das Datenverarbeitungssystem eine Operation trotz
des Fehlers zuverlässig weiterführen kann, folgenden Unterschritt enthält:
Verhindern, daß das Fehlermodul die Inhalte des Speichers ändert.
10. Verfahren nach Anspruch 1, wobei das Datenverarbeitungssystem einen
Speicher enthält, und
wobei der Schritt zum Verhindern, daß das Fehlermodul zusätzliche
Fehler verursacht, wenn das Datenverarbeitungssystem eine Operation trotz
des Fehlers zuverlässig weiterführen kann, folgenden Unterschritt enthält:
Erzeugen eines vorbestimmten Codes, wenn das Fehlermodul
versucht, vom Speicher zu lesen.
11. Verfahren nach Anspruch 1, wobei der Schritt zum Verhindern, daß das
Fehlermodul zusätzliche Fehler verursacht, wenn das Datenverarbeitungssystem
eine Operation trotz des Fehlers zuverlässig weiterfiihren kann, folgenden
Unterschritt enthält:
Einstellen eines Statusindikators, um anzuzeigen, daß das
Fehlermodul einen Fehler verursacht hat.
12. Verfahren nach Anspruch 11, wobei der Unterschritt zum Einstellen des
Statusindikators folgende Unterschritte enthält:
Ausführen von im voraus geplanten Statusprüfungen des
Statusindikators; und
Veranlassen, daß das Datenverarbeitungssystem das Fehlermodul
während der Statusprüfungen sperrt.
13. Verfahren nach Anspruch 12, das weiterhin folgenden Schritt enthält:
Sicherstellen, daß alle durch das Fehlermodul verursachten Fehler
vor den im voraus geplanten Statusprüfungen berichtet worden sind.
14. Verfahren nach Anspruch 13, wobei der Schritt zum Sicherstellen, daß alle
durch das Fehlermodul verursachten Fehler vor den im voraus geplanten
Statusprüfungen berichtet worden sind, folgenden Unterschritt enthält:
Ausführen einer Datenverarbeitungsoperation, die nicht beendet
werden kann, bis nicht zuvor das Berichten über einen Fehler beendet
worden ist.
15. Verfahren nach Anspruch 1, wobei das Datenverarbeitungssystem eine
Moduladressentabelle aufweist, die Adressen für virtuelle Vorrichtungen, auf die
bei den Datenverarbeitungsoperationen Bezug genommen wird, mit Adressen
für physikalische Vorrichtungen tatsächlicher Datenverarbeitungsmodule
korreliert; und
wobei der Unterschritt zum Verhindern, daß das Fehlermodul
zusätzliche Fehler verursacht, wenn das Datenverarbeitungssystem eine Operation
trotz des Fehlers zuverlässig weiterführen kann, folgenden Unterschritt
enthält;
Einstellen der Adresse für physikalische Vorrichtungen entsprechend
der virtuellen Adresse des Fehlermoduls auf einen Wert, der einer
physikalischen Vorrichtung entspricht, die keine Fehler erzeugt.
16. Verfahren nach Anspruch 14, wobei das Datenverarbeitungssystem eine
Moduladressentabelle aufweist, die Adressen für virtuelle Vorrichtungen, auf die
bei den Datenverarbeitungsoperationen Bezug genommen wird, mit Adressen
für physikalische Vorrichtungen tatsächlicher Datenverarbeitungsmodule
korreliert; und
wobei der Unterschritt zum Verhindern, daß das Fehlermodul
zusätzliche Fehler verursacht, wenn das Datenverarbeitungssystem eine Operation
trotz des Fehlers zuverlässig weiterführen kann, folgenden Unterschritt
enthält;
Einstellen der Adressen für physikalische Vorrichtungen
entsprechend den virtuellen Adressen des Fehlermoduls auf einen Wert, der einer
physikalischen Vorrichtung entspricht, die keine Fehler erzeugt.
17. Verfahren nach Anspruch 16, wobei der Unterschritt zum Ausführen im
voraus geplanter Statusprüfungen des Statusindikators folgenden Unterschritt
enthält:
Prüfen einer gespeicherten Modulstatustabelle.
18. Verfahren nach Anspruch 1, wobei jedes Datenverarbeitungsmodul eine
Fehleraufzeichnung zum Speichern von Daten in bezug auf Transaktionen
enthält, die in dem Datenverarbeitungssystem während der Ausführung der
Datenverarbeitungsbefehle auftreten; und
wobei der Unterschritt zum Identifizieren des Fehler-
Datenverarbeitungsmoduls den folgenden Unterschritt enthält:
Bewerten der Fehleraufzeichnung, um das Fehlermodul der
Datenverarbeitungsmodule zu identifizieren.
19. Verfahren nach Anspruch 1, das weiterhin den Schritt zum Erzeugen einer
Unterbrechung enthält, die das Vorhandensein des Fehlers anzeigt.
20. Verfahren nach Anspruch 19, das den Schritt zum Durchführen einer
Unterbrechungsverarbeitungsroutine enthält, nachdem eine Verarbeitung einer
gegenwärtig ablaufenden der Datenverarbeitungsoperationen beendet ist,
wobei der Schritt zum Durchführen der Fehlerverarbeitungsroutine
während der Unterbrechungsverarbeitungsroutine auftritt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38832489A | 1989-08-01 | 1989-08-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69027491D1 DE69027491D1 (de) | 1996-07-25 |
DE69027491T2 true DE69027491T2 (de) | 1997-02-06 |
Family
ID=23533655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69027491T Expired - Fee Related DE69027491T2 (de) | 1989-08-01 | 1990-07-20 | Verfahren zur Softwarefehlerbehandlung |
Country Status (6)
Country | Link |
---|---|
US (1) | US5291494A (de) |
EP (1) | EP0415545B1 (de) |
JP (1) | JPH03184130A (de) |
AT (1) | ATE139632T1 (de) |
CA (1) | CA2022260A1 (de) |
DE (1) | DE69027491T2 (de) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5410545A (en) * | 1992-07-28 | 1995-04-25 | Digital Equipment Corporation | Long-term storage of controller performance |
US5758185A (en) * | 1992-10-01 | 1998-05-26 | Hudson Soft Co. Ltd. | Method for resetting a system controlled by a CPU and having a semi-autonomous IC unit |
US5347559A (en) * | 1992-12-30 | 1994-09-13 | Digital Equipment Corporation | Apparatus and method of data transfer between systems using different clocks |
SE500940C2 (sv) * | 1993-02-10 | 1994-10-03 | Ellemtel Utvecklings Ab | Sätt och system för att i ett distribuerat operativsystem demontera en kedja av sammanlänkade processer |
US5566298A (en) * | 1994-03-01 | 1996-10-15 | Intel Corporation | Method for state recovery during assist and restart in a decoder having an alias mechanism |
US5764995A (en) * | 1994-03-25 | 1998-06-09 | Packard Bell Nec | Write once read only registers |
US5594862A (en) * | 1994-07-20 | 1997-01-14 | Emc Corporation | XOR controller for a storage subsystem |
JP3365581B2 (ja) * | 1994-07-29 | 2003-01-14 | 富士通株式会社 | 自己修復機能付き情報処理装置 |
US5835953A (en) | 1994-10-13 | 1998-11-10 | Vinca Corporation | Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating |
EP0717358B1 (de) * | 1994-12-15 | 2001-10-10 | Hewlett-Packard Company, A Delaware Corporation | Fehlererkennungssystem für einen gespiegelten Speicher in einer duplizierten Steuerung eines Plattenspeicherungssystems |
US5594861A (en) * | 1995-08-18 | 1997-01-14 | Telefonaktiebolaget L M Ericsson | Method and apparatus for handling processing errors in telecommunications exchanges |
US5805791A (en) * | 1996-04-22 | 1998-09-08 | Advanced Micro Devices, Inc. | Method and system for detection of and graceful recovery from a peripheral device fault |
US5815571A (en) * | 1996-10-28 | 1998-09-29 | Finley; Phillip Scott | Computer system with secured data paths and method of protection |
US8225003B2 (en) | 1996-11-29 | 2012-07-17 | Ellis Iii Frampton E | Computers and microchips with a portion protected by an internal hardware firewall |
US7506020B2 (en) | 1996-11-29 | 2009-03-17 | Frampton E Ellis | Global network computers |
US7024449B1 (en) | 1996-11-29 | 2006-04-04 | Ellis Iii Frampton E | Global network computers |
US20050180095A1 (en) | 1996-11-29 | 2005-08-18 | Ellis Frampton E. | Global network computers |
US6167428A (en) | 1996-11-29 | 2000-12-26 | Ellis; Frampton E. | Personal computer microprocessor firewalls for internet distributed processing |
US6725250B1 (en) | 1996-11-29 | 2004-04-20 | Ellis, Iii Frampton E. | Global network computers |
US8312529B2 (en) | 1996-11-29 | 2012-11-13 | Ellis Frampton E | Global network computers |
US7035906B1 (en) | 1996-11-29 | 2006-04-25 | Ellis Iii Frampton E | Global network computers |
WO1999032972A1 (en) * | 1997-12-19 | 1999-07-01 | Ellis Frampton E Iii | Firewall security protection of parallel processing in a global computer networking environment |
US6732141B2 (en) | 1996-11-29 | 2004-05-04 | Frampton Erroll Ellis | Commercial distributed processing by personal computers over the internet |
US7805756B2 (en) | 1996-11-29 | 2010-09-28 | Frampton E Ellis | Microchips with inner firewalls, faraday cages, and/or photovoltaic cells |
US7926097B2 (en) | 1996-11-29 | 2011-04-12 | Ellis Iii Frampton E | Computer or microchip protected from the internet by internal hardware |
US7634529B2 (en) | 1996-11-29 | 2009-12-15 | Ellis Iii Frampton E | Personal and server computers having microchips with multiple processing units and internal firewalls |
US6098181A (en) * | 1997-04-10 | 2000-08-01 | International Business Machines Corporation | Screening methodology for operating system error reporting |
US7096358B2 (en) * | 1998-05-07 | 2006-08-22 | Maz Technologies, Inc. | Encrypting file system |
US6070255A (en) * | 1998-05-28 | 2000-05-30 | International Business Machines Corporation | Error protection power-on-self-test for memory cards having ECC on board |
US6327675B1 (en) | 1998-07-31 | 2001-12-04 | Nortel Networks Limited | Fault tolerant system and method |
US6691250B1 (en) | 2000-06-29 | 2004-02-10 | Cisco Technology, Inc. | Fault handling process for enabling recovery, diagnosis, and self-testing of computer systems |
DE10036598A1 (de) * | 2000-07-27 | 2002-02-14 | Infineon Technologies Ag | Anordnung zur Überwachung des ordnungsgemäßen Betriebes von die selben oder einander entsprechende Aktionen ausführenden Komponenten eines elektrischen Systems |
US6820251B1 (en) * | 2000-11-06 | 2004-11-16 | Hewlett-Packard Development Company, L.P. | System and method for a software recovery mechanism |
US7139848B1 (en) * | 2000-12-08 | 2006-11-21 | Xilinx, Inc. | DMA protocol extension for packet-based transfer |
WO2002073379A2 (en) * | 2001-03-09 | 2002-09-19 | Koninklijke Philips Electronics N.V. | System with a server for verifying new components |
US6802023B2 (en) | 2001-03-15 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Redundant controller data storage system having hot insertion system and method |
US6708285B2 (en) | 2001-03-15 | 2004-03-16 | Hewlett-Packard Development Company, L.P. | Redundant controller data storage system having system and method for handling controller resets |
US6715101B2 (en) | 2001-03-15 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Redundant controller data storage system having an on-line controller removal system and method |
DE10142511B4 (de) | 2001-08-30 | 2004-04-29 | Daimlerchrysler Ag | Fehlerbehandlung von Softwaremodulen |
US6859866B2 (en) * | 2001-10-01 | 2005-02-22 | International Business Machines Corporation | Synchronizing processing of commands invoked against duplexed coupling facility structures |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7260746B2 (en) * | 2003-10-21 | 2007-08-21 | Massachusetts Institute Of Technology | Specification based detection and repair of errors in data structures |
JP2006039678A (ja) * | 2004-07-22 | 2006-02-09 | Fujitsu Ltd | 情報処理装置およびエラー検出方法 |
KR100714970B1 (ko) * | 2004-12-22 | 2007-05-04 | 삼성전자주식회사 | 컴퓨터 |
US7337367B2 (en) * | 2005-01-06 | 2008-02-26 | International Business Machines Corporation | Management of memory controller reset |
US7702966B2 (en) * | 2005-09-07 | 2010-04-20 | Intel Corporation | Method and apparatus for managing software errors in a computer system |
JP4687423B2 (ja) * | 2005-11-25 | 2011-05-25 | 富士ゼロックス株式会社 | ドキュメント処理装置 |
JP4687422B2 (ja) * | 2005-11-25 | 2011-05-25 | 富士ゼロックス株式会社 | ドキュメント処理装置 |
US8806476B2 (en) * | 2006-03-14 | 2014-08-12 | International Business Machines Corporation | Implementing a software installation process |
US8020149B2 (en) * | 2006-08-04 | 2011-09-13 | Apple Inc. | System and method for mitigating repeated crashes of an application resulting from supplemental code |
US8125796B2 (en) | 2007-11-21 | 2012-02-28 | Frampton E. Ellis | Devices with faraday cages and internal flexibility sipes |
US8429735B2 (en) | 2010-01-26 | 2013-04-23 | Frampton E. Ellis | Method of using one or more secure private networks to actively configure the hardware of a computer or microchip |
US9606944B2 (en) * | 2014-03-20 | 2017-03-28 | International Business Machines Corporation | System and method for computer memory with linked paths |
US10379927B2 (en) * | 2016-11-01 | 2019-08-13 | Xilinx, Inc. | Programmable clock monitor |
TWI684988B (zh) * | 2018-10-03 | 2020-02-11 | 慧榮科技股份有限公司 | 錯誤處置方法以及資料儲存裝置及其控制器 |
CN110990175B (zh) | 2018-10-03 | 2023-03-14 | 慧荣科技股份有限公司 | 错误处置方法以及数据存储装置及其控制器 |
CN110989918B (zh) | 2018-10-03 | 2023-03-28 | 慧荣科技股份有限公司 | 写入控制方法以及数据存储装置及其控制器 |
US11182313B2 (en) * | 2019-05-29 | 2021-11-23 | Intel Corporation | System, apparatus and method for memory mirroring in a buffered memory architecture |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AT285689B (de) * | 1968-03-29 | 1970-11-10 | Siemens Ag | Zentralgesteuerte Vermittlungsanlage der Fernmelde-, insbesondere Fernsprechtechnik |
US3665173A (en) * | 1968-09-03 | 1972-05-23 | Ibm | Triple modular redundancy/sparing |
FR2182259A5 (de) * | 1972-04-24 | 1973-12-07 | Cii | |
US4099241A (en) * | 1973-10-30 | 1978-07-04 | Telefonaktiebolaget L M Ericsson | Apparatus for facilitating a cooperation between an executive computer and a reserve computer |
US4031372A (en) * | 1973-11-06 | 1977-06-21 | Westinghouse Electric Corporation | System for manually or automatically transferring control between computers without power generation disturbance in an electric power plant or steam turbine operated by a multiple computer control system |
CH623669A5 (de) * | 1973-11-14 | 1981-06-15 | Agie Ag Ind Elektronik | |
IT1014277B (it) * | 1974-06-03 | 1977-04-20 | Cselt Centro Studi Lab Telecom | Sistema di controllo di elaboratori di processo operanti in parallelo |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4099234A (en) * | 1976-11-15 | 1978-07-04 | Honeywell Information Systems Inc. | Input/output processing system utilizing locked processors |
US4141066A (en) * | 1977-09-13 | 1979-02-20 | Honeywell Inc. | Process control system with backup process controller |
US4153318A (en) * | 1977-10-17 | 1979-05-08 | Square D Company | Bus stab for panelboard assembly |
GB2019622B (en) * | 1978-04-14 | 1982-04-07 | Lucas Industries Ltd | Digital computing apparatus |
US4200226A (en) * | 1978-07-12 | 1980-04-29 | Euteco S.P.A. | Parallel multiprocessing system for an industrial plant |
US4245344A (en) * | 1979-04-02 | 1981-01-13 | Rockwell International Corporation | Processing system with dual buses |
US4253147A (en) * | 1979-04-09 | 1981-02-24 | Rockwell International Corporation | Memory unit with pipelined cycle of operations |
DE2926292A1 (de) * | 1979-06-29 | 1981-01-08 | Harnischfeger Gmbh | Insbesondere mobiler teleskopauslegerkran |
US4428044A (en) * | 1979-09-20 | 1984-01-24 | Bell Telephone Laboratories, Incorporated | Peripheral unit controller |
DE3003291C2 (de) * | 1980-01-30 | 1983-02-24 | Siemens AG, 1000 Berlin und 8000 München | Zweikanalige Datenverarbeitungsanordnung für Eisenbahnsicherungszwecke |
US4330826A (en) * | 1980-02-05 | 1982-05-18 | The Bendix Corporation | Synchronizer and synchronization system for a multiple computer system |
US4371754A (en) * | 1980-11-19 | 1983-02-01 | Rockwell International Corporation | Automatic fault recovery system for a multiple processor telecommunications switching control |
US4453215A (en) * | 1981-10-01 | 1984-06-05 | Stratus Computer, Inc. | Central processing apparatus for fault-tolerant computing |
US4541094A (en) * | 1983-03-21 | 1985-09-10 | Sequoia Systems, Inc. | Self-checking computer circuitry |
US4610013A (en) * | 1983-11-08 | 1986-09-02 | Avco Corporation | Remote multiplexer terminal with redundant central processor units |
US4751702A (en) * | 1986-02-10 | 1988-06-14 | International Business Machines Corporation | Improving availability of a restartable staged storage data base system that uses logging facilities |
EP0236803B1 (de) * | 1986-03-12 | 1992-01-15 | Siemens Aktiengesellschaft | Verfahren zum Betrieb einer fehlergesicherten hochverfügbaren Multiprozessor-Zentralsteuereinheit eines Vermittlungssystemes |
CA1320276C (en) * | 1987-09-04 | 1993-07-13 | William F. Bruckert | Dual rail processors with error checking on i/o reads |
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 |
EP0306211A3 (de) * | 1987-09-04 | 1990-09-26 | Digital Equipment Corporation | Synchronisiertes Doppelrechnersystem |
US4831622A (en) * | 1987-12-22 | 1989-05-16 | Honeywell Bull Inc. | Apparatus for forcing a reload from main memory upon cache memory error |
US4866712A (en) * | 1988-02-19 | 1989-09-12 | Bell Communications Research, Inc. | Methods and apparatus for fault recovery |
-
1990
- 1990-07-20 DE DE69027491T patent/DE69027491T2/de not_active Expired - Fee Related
- 1990-07-20 AT AT90308000T patent/ATE139632T1/de not_active IP Right Cessation
- 1990-07-20 EP EP90308000A patent/EP0415545B1/de not_active Expired - Lifetime
- 1990-07-30 CA CA002022260A patent/CA2022260A1/en not_active Abandoned
- 1990-07-31 JP JP2203804A patent/JPH03184130A/ja active Pending
-
1992
- 1992-11-18 US US07/978,053 patent/US5291494A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA2022260A1 (en) | 1991-02-02 |
EP0415545A2 (de) | 1991-03-06 |
DE69027491D1 (de) | 1996-07-25 |
EP0415545A3 (en) | 1993-02-24 |
EP0415545B1 (de) | 1996-06-19 |
US5291494A (en) | 1994-03-01 |
JPH03184130A (ja) | 1991-08-12 |
ATE139632T1 (de) | 1996-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69027491T2 (de) | Verfahren zur Softwarefehlerbehandlung | |
US5153881A (en) | Method of handling errors in software | |
US5251227A (en) | Targeted resets in a data processor including a trace memory to store transactions | |
US5068851A (en) | Apparatus and method for documenting faults in computing modules | |
DE69032708T2 (de) | Protokoll für Lese- und Schreibübertragungen | |
DE69708881T2 (de) | Dreifach redundantes modulares rechnersystem | |
DE3751600T2 (de) | Dreifachredundantes fehlererkennungssystem und entsprechendes anwendungsverfahren. | |
US5185877A (en) | Protocol for transfer of DMA data | |
US5255367A (en) | Fault tolerant, synchronized twin computer system with error checking of I/O communication | |
DE3686901T2 (de) | Auf hohem systemniveau selbstpruefendes intelligentes e/a-steuergeraet. | |
US4916704A (en) | Interface of non-fault tolerant components to fault tolerant system | |
US5068780A (en) | Method and apparatus for controlling initiation of bootstrap loading of an operating system in a computer system having first and second discrete computing zones | |
US5249187A (en) | Dual rail processors with error checking on I/O reads | |
DE69126498T2 (de) | Wiederherstellungsverfahren und Gerät für eine Pipeline-Verarbeitungseinheit eines Multiprozessor-systems | |
US5065312A (en) | Method of converting unique data to system data | |
DE69435090T2 (de) | Rechnersystem mit Steuereinheiten und Rechnerelementen | |
EP0306209B1 (de) | Doppelschienen-Prozessoren mit Fehlerprüfung an der Einfachschienenschnittstelle | |
DE68924119T2 (de) | Verfahren und Vorrichtung zum Wiederanlauf nach einem Fehler in einem digitalen Rechnersystem. | |
US5048022A (en) | Memory device with transfer of ECC signals on time division multiplexed bidirectional lines | |
DE3880132T2 (de) | Verfahren und geraet zur digitalen logischen synchronismusueberwachung. | |
EP1537482B1 (de) | Verfahren und schaltungsanordnung zur synchronisation synchron oder asynchron getakteter verarbeitungseinheiten | |
DE69508034T2 (de) | Fehlererkennungs-System und -Verfahren für gespiegelten Speicher zwischen doppelten Plattenspeichersteuerungen | |
EP0411805A2 (de) | Massenspeicherübertragung während der Neusynchronisierung | |
DE69032865T2 (de) | Gezielte Rücksetzungen in einem Datenprozessor | |
EP0415547A2 (de) | Verfahren zur Nicht-existierender-Speicher-Fehlerbehandlung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |
|
8339 | Ceased/non-payment of the annual fee |