DE3587284T2 - Fehlertolerante rahmensynchronisation für mehrprozessorsysteme. - Google Patents

Fehlertolerante rahmensynchronisation für mehrprozessorsysteme.

Info

Publication number
DE3587284T2
DE3587284T2 DE85902392T DE3587284T DE3587284T2 DE 3587284 T2 DE3587284 T2 DE 3587284T2 DE 85902392 T DE85902392 T DE 85902392T DE 3587284 T DE3587284 T DE 3587284T DE 3587284 T2 DE3587284 T2 DE 3587284T2
Authority
DE
Germany
Prior art keywords
pulse
pulses
synchronization
path
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE85902392T
Other languages
English (en)
Other versions
DE3587284D1 (de
Inventor
Fook-Tse Lam
Hermann Schmid
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
General Electric Co
Original Assignee
General Electric Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by General Electric Co filed Critical General Electric Co
Application granted granted Critical
Publication of DE3587284D1 publication Critical patent/DE3587284D1/de
Publication of DE3587284T2 publication Critical patent/DE3587284T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level

Landscapes

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

Description

  • Die Erfindung bezieht sich auf ein Multiprozessorsystem gemäß dem ersten Teil des Anspruches 1. Ein derartiges Multiprozessorsystem ist aus der US-A-3,921,149 bekannt.
  • Redundante Computersysteme, die zahlreiche rekonfigurierbare Verarbeitungsmodulen verwenden, sind erforderlich und notwendig in fehlertoleranten Steuerungssystemen, wie sie beispielsweise in digitalen Flugsteuersystemen verwendet werden. Wo rekonfigurierbare Multiprozessorsysteme verwendet werden, ist eine Synchronisierung erforderlich, damit der Betrieb der einzelnen Prozessoren - und insbesondere der Start von jedem Iterations- oder Nebenrahmen - zeitlich koinzidiert. Eine derartige Synchronisierung ist bisher auf dem Computertaktpegel und auf dem Hauptrahmenpegel versucht worden, d. h. dem Intervall, in dem die Prozessoren ihr gesamtes Programm ausführen.
  • Die vorliegende Erfindung bezieht sich auf eine Anordnung zum Synchronisieren eines Multiprozessorsystems auf dem Nebenrahmenpegel (wobei ein Hauptrahmen (major frame) als eine ganze Zahl von Nebenrahmen (minor frame) definiert ist) durch eine Kombination von Hardware und Software.
  • Die Synchronisation wird initiiert bei einem Statuswort, das in der jedem Prozessor zugeordneten Interfaceeinheit am Ende von jedem Nebenrahmen generiert wird. Das Statuswort von jeder Prozessorinterfaceeinheit wird über bestehende dedizierte Interprozessorbuse zu den Synchronisierschaltungen in jeder der anderen Interfaceeinheiten übertragen, um Syncpulse zu generieren. In einem acht (8) Prozessorkanal werden nur vier (4) der Syncpulse verwendet, um zu ermitteln, ob in dem zwei Mikrosekunden (2 us) langen "Zeitfenster" Pulse ankommen.
  • Die Synchronisierhardware erzeugt ein Steuersignal in der Form von einem Prozessor-Interruptsignal an dem Ende von jedem Nebenrahmen, um die Hauptsoftwareroutine zu initiieren. Das Interruptsignal wird erzeugt, wenn zwei oder mehr der vier (4) Pulse innerhalb des "Zeitfensters" ankommen, unabhängig davon, ob die anderen Pulse früher oder später als die Mehrzahl ankommen. Die Hauptsoftwareroutine identifiziert alle Syncpulsfehler - den Prozessor, der dem fehlerhaften Syncpuls zugeordnet ist - und substituiert Prozessoren, wenn die Syncfehleranzeige kleiner als drei ist.
  • Die Synchronisation durch eine Kombination von Hardware und Software hat den Vorteil, daß sehr wenig zusätzliche Hardware erforderlich ist, der zeitliche "Schräglauf" (Skew) zwischen Prozessoren sehr klein ist, die Schaltungsanordnungen nicht nur Zeitsteuer- sondern auch Bus/Senderfehler detektieren und die Anordnung keine zusätzlichen Leitungen zwischen den zu synchronisierenden Moduln erfordert.
  • Es ist deshalb eine Aufgabe der Erfindung, ein fehlertolerantes Multiprozessorsystem zu schaffen, das mehrere redundante Prozessoren aufweist, die auf einfache Weise auf dem Nebenrahmenpegel synchronisiert sind.
  • Es ist eine weitere Aufgabe der Erfindung, eine Synchronisation von einem Multiprozessorsystem durch eine Kombination von logischer Synchronisationshardware und Supervisor- Software zu schaffen.
  • Ferner ist es Aufgabe der Erfindung, ein Synchronisationssystem für ein fehlertolerantes Multiprozessor- Computersteuersystem zu schaffen, das höchst effektiv und nicht einem einzelnen Fehler ausgesetzt ist.
  • Weitere Aufgaben und Vorteile der Erfindung werden aus der nachfolgenden Beschreibung deutlich.
  • Das Multiprozessorsystem gemäß der Erfindung, wie sie beansprucht ist, ist durch die Merkmale des zweiten Teils von Anspruch 1 gekennzeichnet.
  • Weitere Ausführungsbeispiele der Erfindung sind in den Unteransprüchen beansprucht.
  • Das Multiprozessorsystem gemäß der Erfindung wird somit von einem Hardware-Softwaresystem gebildet, in dem der Betrieb der zahlreichen Verarbeitungsmodulen in Realzeit synchronisiert sind.
  • Die Software-Supervisor-Routine ermittelt, welcher der Syncpulse und ihrer zugeordneten Prozessoren nicht synchron sind, und ersetzt jeden außerhalb der Toleranz liegenden Prozessor gegen einen der verbleibenden Prozessoren.
  • Die Softwareroutine ist in der Lage, jede Uneindeutigkeit in der Situation aufzulösen, wo die Syncpulse nicht in Paaren auftreten und es ungewiß ist, ob das eine Paar früher oder das eine Paar später ist. Die Uneindeutigkeit wird aufgelöst durch Ersetzen von einem Prozessor und Puls in jedem Paar, so daß die Uneindeutigkeit in nicht mehr als drei Nebenrahmen aufgelöst werden kann.
  • Die Erfindung selbst in Verbindung mit anderen Aufgaben und durch sie erzielbare Vorteile werden jedoch besser verständlich durch die folgende Beschreibung in Verbindung mit den Zeichnungen, in denen:
  • Fig. 1 ein Blockdiagramm von einem Multiprozessorkanal ist und den Prozessor, die Businterfaceeinheiten (BIU) und die dedizierten Buse zeigt, die zwischen den Interfaceeinheiten angeordnet sind, um Synchronisierpulse zuzuführen;
  • Fig. 2 ein Blockdiagramm von einer der in Fig. 1 gezeigten Businterfaceeinheiten darstellt;
  • Fig. 3 und 3a die Synchronisierhardware in der BIU mit der aktivierenden Logikschaltung zeigt, die die Interruptsignale usw. erzeugt;
  • Fig. 4 ein Fließbild von der Software-Supervisor-Routine für die Businterfaceeinheiten zeigt.
  • Jeder der Prozessoren enthält eine Businterfaceeinheit (BIU) für eine Interprozessor-Kommunikation und Synchronisation an dem Ende von jedem Prozessor-Nebenrahmen. Die Interfaceeinheiten sind durch dedizierte Buse von allen Prozessoren in dem Multiprozessorkanal miteinander verbunden. Eine vorbestimmte Anzahl der gesamten Syncpulse (beispielsweise vier von acht) werden an die Synchronisationsschaltung in der Businterfaceeinheit angelegt. Die Synchronisationslogik ermittelt, ob die Synchronisierpulse innerhalb eines gegebenen "Zeitfensters" (beispielsweise zwei Mikrosekunden) empfangen werden, was als Synchronisation in Realzeit betrachtet wird.
  • Die Synchronisationsschaltung in jeder Interfaceeinheit generiert einen Interruptpuls, der die Software-Supervisor- Routine immer dann initiiert, wenn eines der folgenden Ereignisse während jeder Nebenrahmen-Synchronisationssequenz auftritt:
  • a. Alle vier Syncpulse sind empfangen worden.
  • b. Wenigstens ein Syncpuls kommt innerhalb des vorbestimmten zwei-Mikrosekunden "Zeitfensters" nicht an.
  • Fig. 1 zeigt ein Blockdiagramm von einem redundanten Multiprozessorkanal mit acht Verarbeitungs- und/oder I/O Moduln, jeder mit seiner Businterfaceeinheit (BIU). Vier Prozessoren und Businterfaceeinheiten sind bei 10, 11, 12 und 13 dargestellt, wobei die übrigen vier (4) durch die Punkte 14 dargestellt sind. Die diesen Moduln zugeordneten Businterfaceeinheiten haben acht (8) Eingangsleitungen und eine Ausgangsleitung 20. Vier (4) der Eingangsleitungen sind bei 15, 16, 17 und 18 gezeigt, wobei die übrigen vier (4) durch Punkte gezeigt sind. Die Businterfaceeinheiten sind durch acht (8) dedizierte serielle Datenbuse 21, 22, 23 und 24 miteinander verbunden, wobei die übrigen vier durch die Punkte 25 gezeigt sind. Somit wird die Ausgangsleitung (20) von jeder Businterfaceeinheit mit ihrer eigenen Businterfaceeinheit über die Leitung 15 und mit den Businterfaceeinheiten der übrigen sieben Moduln über die dedizierten Buse 21-24 verbunden. Somit empfängt in dem in Fig. 1 gezeigten Achtkanalsystem die Businterfaceeinheit acht (8) Statuswort/Syncsignale am Ende von jedem Nebenrahmen, von denen vier mit der Synchronisations-Hardwarelogik verbunden werden, um zu ermitteln, ob die Prozessoren synchron sind.
  • Um vollständig die Art und Weise zu verstehen, in der der Businterfacesynchronisierer und die Supervisor-Softwareroutine des Prozessors miteinander zusammen arbeiten, um Realzeit-Synchronismus innerhalb eines zwei-Mikrosekunden "Zeitfensters" zu erhalten, wird es für nützlich gehalten, in einem Rückblick zu betrachten, welches in der Wirkung die betrieblichen Gesetze der Businterfaceeinheit-Hardware und der Supervisor-Softwareroutine sind. Es gilt:
  • 1. Wenn die Prozessoren zum Ende von einem Nebenrahmen kommen und den nächsten Nebenrahmen innerhalb von zwei Mikrosekunden initiieren, werden sie als synchronisiert betrachtet.
  • 2. Ein maximaler System-"Schräglauf" (Skew) von 5-6 Mikrosekunden zwischen Prozessoren ist zulässig.
  • 3. Ein früher Syncpuls initiiert nicht die Supervisor- Routine; d. h. ein einzelner "früher" Pulsfehler wird detektiert und nur am Ende der Nebenrahmen-Synchronisation korrigiert.
  • 4. Die Software-Supervisor-Routine wird immer initiiert, wenn alle vier Syncpulse in dem "Zeitfenster" empfangen werden.
  • 5. Wenn zwei Syncpulse fehlerhaft sind, wodurch angezeigt wird, das zwei Prozessoren nicht synchron sind, ersetzt die Supervisor-Softwareroutine die nicht-synchronen Prozessoren gegen synchrone Prozessoren.
  • 6. Wenn der Zweipulsfehler eine uneindeutige Situation darstellt, d. h. eine, in der zwei Pulse zu "früh" sein könnten oder zwei Pulse zu "spät" sein könnten, wird die Mehrdeutigkeit aufgelöst, indem der eine Puls und der Prozessor in jedem Paar während des nächsten Nebenrahmens ersetzt wird, um zu ermitteln, welches Paar fehlerhaft war. Während des dritten Nebenrahmens substituiert dann die Routine den verbleibenden des fehlerhaften Paares.
  • 7. Ein Fehler der gleichen zwei Syncpulse während aufeinanderfolgender Nebenrahmen, nachdem Prozessoren substituiert worden sind, zeigt an, daß die Businterfaceeinheit und ihr Synchronisierer fehlerhaft sind. Sie und ihr zugeordneter Prozessor werden dann entfernt.
  • 8. Jede Anzeige, daß drei Prozessoren nicht synchron sind, stellt einen Synchronisierer- und Interfaceeinheit- Hardwarefehler dar, woraufhin dieser Prozessor aus dem Betrieb genommen wird.
  • Der Einfachheit halber wird der Begriff Nebenrahmen verwendet, um ein Intervall zu bedeuten, in dem wenigstens ein Teil des Programms ausgeführt wird; d. h. eines der wiederholten Rechenintervalle. Der Prozessor führt bei der Ausführung seines Programms gewöhnlich gewisse Instruktionen in jedem Nebenrahmen durch, einige Instruktionen in jedem anderen oder einmal innerhalb mehrerer Nebenrahmen durch und andere einmal in jedem Hauptrahmen durch. Während ein Nebenrahmen 6,25 Millisekunden und ein Hauptrahmen 100 Millisekunden (d. h. 16 Nebenrahmen) beträgt, wobei diese Werte aus Zweckmäßigkeitsgründen bei der Beschreibung der Erfindung verwendet werden, soll die Erfindung selbstverständlich nicht darauf beschränkt sein, sondern die Dauer eines Nebenrahmens, die Anzahl von Nebenrahmen in einem Hauptrahmen und die Zeitdauer des Hauptrahmens können verändert werden, um an den jeweiligen Anwendungsfall angepaßt zu sein. In ähnlicher Weise stellt die Verwendung eines "Zeitfensters" von zwei (2) Mikrosekunden, um einen Nebenrahmensynchronismus zu definieren, lediglich ein Anwendungsbeispiel dar, wobei auch andere "Zeitfenster"-Intervalle verwendet werden können.
  • Bei einem 6,25 Millisekunden Nebenrahmenintervall und einem zwei (2) Mikrosekunden "Zeitfenster" zwischen Pulsen ist der maximale System-"Schräglauf" gerade unter sechs (6) Mikrosekunden. Das heißt, wenn jeder der letzten drei (3) Pulse 1 , 9 Mikrosekunden nach dem vorhergehenden ankommt, wird das System als synchron betrachtet. Aber das Gesamtintervall oder "Schräglauf" zwischen den vier (4) Syncpulsen ist gerade unter sechs (6) Mikrosekunden. Jedoch selbst mit einem maximalen "Schräglauf" von gerade unter sechs (6) Mikrosekunden und einer Nebenrahmenzeit von 6,25 Millisekunden ist die Genauigkeit der Synchronisation, im schlimmsten Fall, innerhalb von ein zehntel Prozent der Nebenrahmenperiode.
  • Fig. 2 ist ein Blockdiagramm von einer in Fig. 1 gezeigten Businterfaceeinheit (BIU). Die Businterfaceeinheit enthält einen programmierbaren Rahmenzähler 30, der das 6,25 Millisekunden Nebenrahmen-Zeitintervall generiert. Am Ende von jedem 6,25 Millisekunden Nebenrahmen-Zählwert generiert der Rahmenzähler 30 einen "Rahmenstrobe"-Puls, der der BIU Steuerschaltung 32 zugeführt wird. Die BIU Steuerschaltung 32 generiert ein Statuswort und einen Syncpuls als Antwort auf das "Statuswort". Alle anderen Prozessor/BIUs arbeiten in der gleichen Weise, um Syncpulse zu generieren. Syncpulse von allen Prozessoren werden in Datennetzwerken 34-41 empfangen. Eine Wähl- oder Multiplexierschaltung, die nicht gezeigt ist, wählt vier von den acht Syncpulsen zum Anlegen an den Synchronisierer.
  • Die gewählten Syncpulse werden einem lokalen Resetgenerator 43 zugeführt. Der Generator 43 enthält Syncpuls-Entscheidungslogikhardware, die ermittelt, ob die Syncpulse während des "Zeitfensters" ankommen, und diese Information speichert. Die lokale Syncpuls-Entscheidungslogik betätigt einen Pulsgenerator, um den Prozessor-Interruptpuls zu erzeugen. Dieser initiiert die Software-Supervisor-Routine von dem Prozessor, die den Synchronisiererstatus ermittelt, um zu sehen, ob ein Fehler aufgetreten ist, identifiziert jeden fehlerhaften Puls und Prozessor und beseitigt den fehlerhaften Syncpuls und Prozessor.
  • Ein Resetpuls wird eine Mikrosekunde nach dem Interruptpuls generiert. Der Resetpuls wird dem Rahmenzähler 30 zugeführt, um eine Sekunde, nachdem der Interruptpuls die Software-Serviceroutine initiiert hat, den neuen Nebenrahmen- Zählwert zu initiieren.
  • Der lokale Resetgenerator 43 enthält 1-aus-4, 2-aus-4, 3- aus-4 und 4-aus-4 synchronisiererentscheidungs-Logikschaltungen, um den Prozessor-Interruptpuls beim Auftreten von allen vier Pulsen zu generieren oder wenn die 2-aus-4 oder 3-aus-4 Schaltungen ablaufen; d. h. wenn einer oder mehr der verbleibenden Syncpulse durch ein Intervall getrennt sind, das größer als das zwei Mikrosekunden "Zeitfenster" ist. Information über die Zustände der Logikschaltungen und die Identität der Syncpulse, die innerhalb des "Zeitfensters" angekommen sind oder nicht, wird in einer Pufferspeichereinrichtung gespeichert. Das Pufferelement wird während der Supervisor-Softwareroutine abgefragt, um irgendwelche fehlerhaften Syncpulse zu identifizieren und die Beseitigung des fehlerhaften Pulses oder der Pulse und ihrer zugeordneten Prozessoren zu gestatten.
  • Die Erfindung ist keineswegs auf einen acht (8) Kanal-Prozessor beschränkt, bei dem vier (4) Syncpulse für die Nebenrahmensynchronisation verwendet werden. Allgemein wird in einem System, das N Syncpulse verwendet, der Synchronisierer 1-aus-N, 2-aus-N . . . ., N-aus-N Entscheidungslogikschaltungen enthalten, um ein Interruptsignal immer dann zu erzeugen, wenn N-aus-N Pulsen angekommen sind oder wenn irgendeine außer der 1-aus-N Logikschaltungen eine Pulstrennung größer als das 2 Mikrosekunden "Zeitfenster" angibt.
  • Die Erzeugung eines Interruptsignals friert auch die Synchronisiererschaltung ein, um jede weitere externe Eingabe, die beispielsweise Sync- oder Taktpulse, in die Synchronisiererhardware zu hemmen, so daß der Prozessor die Funktionstüchtigkeit der Schaltungsanordnung während der Supervisor-Routine prüfen kann. Am Ende der Supervisor-Routine setzt der Prozessor die Synchronisierer-Hardware zurück, um sie für die nächste Nebenrahmen-Synchronisations-, Interrupt- und Supervisor-Routinensequenz vorzubereiten.
  • Fig. 3 und 3a zeigen den lokalen Resetgenerator 43, der einen Interruptpulsgenerator 41, einen Statuspuffer 42, der die Information über den Status des Synchronisierers speichert, den 1-aus-4-Pfad 44, den 2-aus-4-Pfad 45, den 3-aus- 4-Pfad 46 und den 4-aus-4-Pfad 47 enthält, deren Ausgänge mit dem Puffer 42 verbunden sind. Die logischen Entscheidungsschaltungen 48-51 in den Pfaden 44, 45 und 46 sind über OR-Gates 52-54 mit Zeitsteuerungen bzw. Timern 55-57 verbunden, die von den OR-Gates gesteuert werden. Die logischen Entscheidungsnetzwerke werden von Vierfach-Eingangs- Verriegelungs- bzw. Auffang-Flipflops (Latches) 58-61 gesteuert, die in Abhängigkeit von den Sync-Eingangspulsen gesetzt werden.
  • Der Statuspuffer 42 ist ebenfalls mit den Quad- bzw. Vierfach-Verriegelungs-Flipflops 58-61 verbunden und registriert den Status dieser Flipflops, so daß die Identität von irgendeinem fehlerhaften Syncpuls (und seines zugeordneten Prozessors) während der Software-Supervisor-Routine auf einfache Weise ermittelt werden kann.
  • Die Ausgänge von jedem der Syncpulspfade, außer dem 1-aus- 4-Pfad 44, sind mit dem Interruptpulsgenerator 41 über ein Interruptspuls-AND-Gate 42 verbunden. Das AND-Gate 42 betätigt den Interruptgenerator 41 (der die Form von einem digitalen Univibrator 63 hat), um einen Interruptpuls zu erzeugen. Der Interruptpuls auf der Leitung 64 wird dem lokalen Prozessor zugeführt, um die Software-Supervisor-Routine zu initiieren. Das Auftreten eines negativ werdenden Interruptpulses bewirkt auch, daß der Prozessor einen Statuspuffer-Freigabepuls generiert, der gestattet, daß die in dem Statuspuffer 42 gespeicherte Information über den Datenbus 65 während der -Supervisor-Routine wieder aufgefunden wird.
  • Der digitale Univibrator 63 generiert einen Resetpuls eine (1) Mikrosekunde nach dem Interruptpuls. Der Resetpuls wird über die Leitung 66 zum Rücksetzen des digitalen Univibrators 63 und an den Resetanschluß des Zählers 30 angelegt, um das nächste Nebenrahmenintervall zu initiieren.
  • Der Interruptpuls wird auch über einen Leiter 67 und einen invertierenden Verstärker 68 an die Eingänge der Vierfach- Verriegelungs-OR-Gates 69-74 angelegt, um die Eingabe in die Vierfach-Verriegelungen einzufrieren und weitere Sync- Eingangspulse in die Verriegelungen zu blockieren. Der Interruptpuls auf der Leitung 67 sperrt auch das Taktpuls- AND-Gate 73, um Taktpulse von den Zeitsteuerungszählern 55- 57 zu sperren.
  • Die Entscheidungslogik in dem 1-aus-4-Pfad betätigt den Zähler 55 beim Empfang von jedem Syncpuls. Der Zähler 55 ist durch den 2-aus-4-Pfad gesperrt, wenn ein weiterer Puls in dem zwei (2) Mikrosekunden "Zeitfenster" ankommt. Wenn der Zähler 55 auszählt, weil ein zweiter Puls innerhalb von zwei Mikrosekunden nicht ankommt, wird ein Verriegelungs- Setzsignal für den Statuspuffer 42 generiert.
  • Die Entscheidungslogik in dem 2-aus-4-Pfad wird beim Empfang von jeder Kombination von zwei Syncpulsen betätigt, um die zwei (2) Mikrosekunden-Zählung zu initiieren. Der Zähler 56 wird durch den 3-aus-4-Pfad gesperrt, wenn ein dritter Puls innerhalb eines zwei Mikrosekunden "Zeitfensters" nach dem zweiten Puls ankommt. Der Zähler 56 läuft ab, wenn ein dritter Puls nicht innerhalb von zwei Mikrosekunden nach dem zweiten Puls ankommt und betätigt den Interruptpulsgenerator 41, um die Supervisor-Softwareroutine zu initiieren. Diese Information wird im Statuspuffer 42 gespeichert.
  • Beim Empfang von irgendeiner Kombination von drei Pulsen wird der 3-aus-4-Pfad betätigt, und der Zähler 57 beginnt seine Zählung. Der Zähler 57 wird durch den 4-aus-4-Pfad gesperrt, wenn der vierte Puls in dem 2 Mikrosekunden-"Zeitfenster" ankommt, d. h. bevor der Zähler 57 auszählt. Wenn der vierte Puls nicht ankommt, wird ein Interruptpuls generiert. Wenn der Zähler 57 auszählt, wird diese Information in dem Statuspuffer 42 gespeichert.
  • Der 4-aus-4-Pfad wird betätigt, wenn alle vier (4) Pulse in dem "Zeitfenster" empfangen werden, um den Interruptpuls zu generieren. Der Status dieses Pfades wird in dem Statuspuffer 42 gespeichert.
  • Vierfach-Eingangsverriegelungen
  • Die Eingangsverriegelungen 58-61 werden bei negativ werdenden Syncpulsen A-D betätigt. Die Ausgänge aus den Verriegelungen sind mit den Entscheidungslogikschaltungen in den Pfaden 44-47 verbunden, die mit einer negativen Logik arbeiten. Die Eingänge zu den Schaltungslogikschaltungen sind mit den invertierten oder Nicht-Null-Ausgangsanschlüssen der Verriegelungen verbunden. Somit sind bei Fehlen eines Syncpulses die Nicht-Null-Anschlüsse der Verriegelungen in dem logischen EINS-Zustand. Syncpulse setzen die Verriegelungen, so daß die Ausgangsgröße aus dem Nicht-Null-Anschluß nach NULL geht.
  • Die Syncpulse A, B, C und D werden an den einen Eingang von OR-Gattern 69-72 angelegt. Der andere Eingang von jedem OR- Gatter ist über die Leitung 67 und den Invertierer 68 mit dem Interruptsignalgenerator 41 verbunden. Bei Fehlen eines Interruptsignals ist der eine Eingang zu jedem Gatter auf einer logischen NULL. Das Auftreten eines negativ werdenden Syncpulses bewirkt, daß beide Eingänge NULL werden und die Ausgangsgröße des OR-Gatters nach NULL wechselt, wodurch die zugeordnete Verriegelung gesetzt und bewirkt wird, daß die Ausgangsgröße aus dem Nicht-Null-Anschluß von EINS nach NULL wechselt.
  • Entscheidungslogikschaltungen
  • Die Boolschen Gleichungen für die Entscheidungslogikschaltungen 48-51, die auf die Syncpulse A,B, C und D ansprechen, sind wie folgt:
  • 1-aus-4 = A+B+C+D (betätigt in Abhängigkeit vom Auftreten von irgendeinem Syncsignal)
  • 2-aus-4 = (AB) + (AC) + (AD) + (BC) + (BD) + (CD) (betätigt in Abhängigkeit von jeder Kombination von zwei Syncsignalen)
  • 3-aus-4 = (ABC)+(ABD)+(ACD)+(BCD) (betätigt in Abhängigkeit von jeder Kombination von drei Syncsignalen)
  • 4-aus-4 = ABCD (betätigt in Abhängigkeit von allen vier Syncsignalen)
  • 1-aus-4
  • Die 1-aus-4-Sync-Entscheidungslogik 48 ist in Form eines vier Eingänge aufweisenden AND-Gatters 75 aufgebaut, das mit den Nicht-Null-Anschlüssen der Verriegelungen 58-61 verbunden ist. Bei Fehlen von Syncpulsen sind die Ausgänge von allen Verriegelungen EINS und die Ausgangsgröße des AND-Gatters ist EINS. Sobald irgendein Syncpuls ankommt, wird die zugeordnete Verriegelung gesetzt, und der Nicht- Null-Anschluß geht nach NULL. Alle Eingänge zu dem AND-Gatter 75 sind nicht mehr EINS, und die Ausgangsgröße des AND- Gatters 75 wird NULL.
  • 2-aus-4
  • Die Entscheidungslogikschaltung 49 in dem 2-aus-4-Pfad 45 enthält ein sechs Eingänge aufweisendes AND-Gatter 76, das mit den OR-Gattern 77-82 verbunden ist. Die Eingänge der OR-Gatter 77-82 sind mit den Verriegelungen 58-61 verbunden. Die Eingänge in die einzelnen OR-Gatter stellen die sechs möglichen Kombinationen der vier Syncpulse dar. Bei Fehlen von zwei (2) Syncpulsen sind die Ausgangsgrößen aus allen OR-Gattern EINS und die Ausgangsgröße aus dem AND- Gatter 76 ist ebenfalls EINS. Immer wenn irgendeine Kombination von zwei Syncpulsen auftritt, geht die Ausgangsgröße von einem der OR-Gatter 77-82 nach NULL. Infolgedessen geht ein Eingang zum AND-Gatter 76 nach NULL und seine Ausgangsgröße geht nach NULL.
  • 3-aus-4
  • Die Entscheidungslogikschaltung 50 in den 3-aus-4-Pfad enthält ein vier Eingänge aufweisendes AND-Gatter 77, das mit den OR-Gattern 78-81 verbunden ist, die alle möglichen Kombinationen von drei Syncpulsen darstellen. Jede Kombination von drei Pulsen bewirkt, daß der Ausgang von einem dieser drei OR-Gatter nach NULL geht, wodurch der Ausgang des AND- Gatters 77 nach NULL geht.
  • 4-aus-4
  • Die 4-aus-4 Entscheidungslogik ist ein vier Eingänge aufweisendes OR-Gatter 82, das Eingänge von allen vier Verriegelungen aufweist. Die Ausgangsgröße des OR-Gatters 82 ist EINS, bis alle vier Eingänge zu dem OR-Gatter nach NULL gehen, ein Zustand, der nur dann möglich ist, wenn alle vier Syncpulse angekommen sind.
  • Zählersteuer-OR-Gatter
  • Die Entscheidungslogikschaltungen steuern OR-Gatter 52-54, durch die die Taktpulse für die Zähler hindurchtreten müssen. Immer wenn die Boolsche Gleichung für jede der Entscheidungslogikschaltungen erfüllt ist, wechselt deren Ausgangsgröße, wodurch die drei Eingänge aufweisenden OR-Gatter in den 1-, 2- und 3-aus-4-Pfaden freigegeben und Taktpulse von dem AND-Gatter 73 an die Zähler angelegt werden, die zu zählen beginnen. Wenn die anderen Syncpulse nicht innerhalb des zwei Mikrosekunden "Fensters" ankommen, zählt der Zähler aus und die Ausgangsgröße aus den Zählern 56 und 57 initiiert den Interruptpuls. Wenn jedoch die anderen Pulse innerhalb der Zeitperiode ankommen, sperren die invertierenden Verstärker 85, 86 und 87, die zwischen die Ausgänge der logischen Entscheidungsschaltungen in den nächst höheren Pfad, d. h. AND-Gatter 76, 77 und OR-Gatter 82, geschaltet sind, die OR-Gatter 52-54 und halten weitere Taktpulse von den Zählern fern.
  • Interruptpulsgenerator
  • Ein Zeitablauf der Zähler 56 oder 57 oder der Zustandwechsel des OR-Gatters 82, die anzeigen, daß wenigstens drei (3) Pulse innerhalb des zwei Mikrosekundenfensters angekommen sind, hat zur Folge, daß der eine Eingang zum AND-Gatter 62 in einen logischen Zustand NULL geht, wodurch dessen Ausgangsgröße den digitalen Univibrator 63 triggert, um den negativ werdenden Interruptpuls des lokalen Prozessors zu erzeugen. Die Ausgangszustände der Zähler und des OR-Gatters 62 werden in dem Puffer 42 gespeichert. Der Interruptpuls initiiert einen Betrieb der Software-Supervisor-Routine, die den Status der Sync-Schaltungen identifiziert und irgendwelche Syncpulse identifiziert, die nicht synchron sind. Eine (1) Mikrosekunde nach dem Interruptpuls wird ein Resetpuls durch den digitalen Univibrator generiert. Dieser Puls setzt den programmierbaren Zähler 30 zurück und initiiert den Start der nächsten Nebenrahmenzählung. Der Resetpuls setzt auch den digitalen Univibrator 63 zurück und bereitet ihn für den Betrieb der nächsten Synchronisiersequenz vor.
  • Überwachungsschaltung
  • Eine Überwachungs(Übersteuerungs)schaltung 88 ist vorgesehen, um einen Interruptpuls zu generieren, falls irgendeine Synchronisiererschaltung angibt, daß drei von den vier Syncpulsen nicht angekommen sind; d. h. die 2-, 3- und 4-aus-4- Pfade sind nicht betätigt, da dies eine Anzeige dafür ist, daß der Synchronisierer fehlerhaft ist und nicht das drei Prozessoren nicht synchron sind. Dies erfordert, daß der Synchronisierer und sein zugeordneter Prozessor entfernt werden. In dem Fig. 3 gezeigten Aufbau der Sync-Schaltungsanordnung wird kein Interruptpuls generiert, wenn drei Syncpulse fehlen, weil die logischen Entscheidungsschaltungen in den 2-, 3- und 4-aus-4-Pfaden die OR-Gatter für die Taktpulse sperren. Die Überwachungsschaltung, die einen internen Takt und Zähler aufweist, generiert einen Interruptpuls, wenn sie für ein längeres Intervall als den Nebenrahmen zählen kann (d. h. 9 Millisekunden gegenüber dem 6,25 Millisekunden Nebenrahmenintervall). Die Überwachungsschaltung enthält einen Zähler 89, der eine Zählperiode hat, die größer als das Nebenrahmenintervall ist. Der Zähler ist über das AND-Gatter 90 mit dem programmierbaren Zähler und der Sync-Reset-Pulsleitung von dem lokalen Prozessor verbunden. Wenn ein Interruptpuls durch die Synchronisierschaltung am Ende eines Nebenrahmens generiert wird, wird der Zähler der Überwachungsschaltung jedes Mal zurückgesetzt, wenn der programmierbare Zähler 30 seine Nebenrahmenzählung beginnt.
  • Wenn jedoch der Synchronisierer fehlerhaft ist, so daß kein Interruptpuls generiert und kein Sync-Resetpuls von dem Prozessor empfangen wird, zählt der Zähler der Überwachungsschaltung weiter, weil er nicht zurückgesetzt wird. Zu einer gewissen Zeit nach einem Nebenrahmenintervall zählt der Zähler der Überwachungsschaltung aus und generiert ein Interruptsignal für den lokalen Prozessor, der dann die Software-Supervisor-Routine initiiert. Während der Software-Supervisor-Routine wird festgestellt, daß drei Pulse nicht angekommen sind, wodurch ein fehlerhafter Synchronisierer angezeigt wird, und die Softwareroutine schaltet dann den lokalen Prozessor ab und nimmt ihn außer Betrieb.
  • Die Ausgangsleitungen aus den Vierfach-Verriegelungen 58-61 sind auch mit einer vier (4) Bit Verriegelung verbunden, die von dem Zähler 55 in dem 1-aus-4-Pfad gesetzt wird. Die vier Ausgänge von dieser Verriegelung sind mit dem Statusdatenpuffer 42 verbunden. Wenn ein Syncpuls früh ist, zählt der Zähler 55 aus, setzt die vier (4) Bit-Verriegelung und identifiziert, welche der Vierfach-Verriegelungen 58-61 gesetzt worden ist, d. h. welcher Syncpuls mehr als zwei Mikrosekunden früh angekommen ist. Die Software-Supervisor- Routine prüft dann den Statuspuffer 52, um irgendeinen frühen Puls zu identifizieren, wenn die Eingänge A oder B des Datenpuffers gesetzt sind.
  • Supervisor-Routinen-Fließbild
  • Fig. 4 zeigt ein Fließbild von der Interrupt-Service-Routine, die am Ende von jedem Nebenrahmen initiiert wird. Bei Erzeugung des Interruptsignals beginnt die Supervisor-Software ihr Programm, indem ein Syncpuls zum Datenpuffer 42 gesendet wird, damit die Statusdaten über die Datenbusanschlüsse 65 ausgelesen werden können, um zu ermitteln, welche Syncpulse und Prozessoren fehlerhaft sein können. Die Service-Routine ermittelt zunächst, ob der Datenpuffereingang A, der dem 4-aus-4-Pfad zugeordnet ist, gesetzt ist, was anzeigt, daß der Interruptpuls hier generiert wurde. Wenn er gesetzt ist, was bedeutet, daß der Interrupt von dem 4-aus-4-Pfad kam, gibt dies an, daß die Zähler in den 2- und 3-aus-4-Pfaden nicht ausgezählt haben. Wenn die zweiten und dritten Pulse innerhalb des "Zeitfensters" nicht angekommen sind, würden entweder der Zähler 56 oder 57 ausgezählt haben, wobei sie einen Interruptpuls erzeugen, die Verriegelungs-Steuergatter einfrieren und verhindern, daß der vierte Puls empfangen wird. Wenn also der Datenpuffereingang A, der dem 4-aus-4-Pfad zugeordnet ist, gesetzt ist, ist dies eine Anzeige, daß alle vier Pulse empfangen worden sind. Die Supervisor-Routine fragt dann den Puffer ab, um zu ermitteln, ob der Datenpuffereingang D, der dem 1-aus-4-Zähler 5 zugeordnet ist, gesetzt ist, weil, wie zuvor bereits ausgeführt wurde, das System für einen Fehler tolerant ist, so daß ein "früher" Syncpuls noch keinen Interruptpuls generiert. Wenn der Zähler 55 diese Information auszählt, wird sie einfach in dem Puffer 42 gespeichert, um den Fehler anzuzeigen. Wenn also D nicht gesetzt ist, dann macht dies deutlich, daß alle Prozessoren synchron sind, und die Supervisor-Routine kehrt dann in irgendwelche anderen Service-Routinen zurück, die abgefragt werden können, und wird dann beendet.
  • Wenn jedoch der Datenpuffereingang D gesetzt ist, ermittelt die Supervisor-Routine, welcher der Syncpulse früh war. Wenn der "frühe" Syncpuls identifiziert ist, wird diese Information notiert und das System wird repariert, indem dieser Syncpuls und sein zugeordnet er Prozessor während des nächsten Nebenrahmens gegen einen der verbleibenden vier Prozessoren ausgewechselt wird.
  • Wenn jedoch notiert ist, daß der Dateneingang A nicht gesetzt ist, womit angezeigt wird, daß ein vierter Puls nicht angekommen ist, weil ein Interruptpuls vor der Ankunft des vierten Syncpulses generiert worden ist, wird der Datenpuffer abgefragt, um zu identifizieren, welcher Syncpuls oder welche Syncpulse nicht innerhalb des "Zeitfensters" angekommen sind. Wenn der Zähler in dem 3-aus-4-Pfad abgelaufen ist, weil ein Puls "spät" ist, würde der Datenbuseingang B gesetzt sein. Der Datenpuffer wird abgefragt, um zu ermitteln, welches der Vierfach-Verriegelungs-Eingangsnetzwerke noch in dem logischen Zustand EINS ist, der anzeigt, daß sein zugeordneter Puls nicht angekommen ist. Dieser Zustand wird dann berichtet und die Schaltungsanordnung wird repariert, indem der Syncpuls und sein zugeordneter Prozessor entfernt und gegen einen "guten" Prozessor ersetzt wird, d. h. gegen einen synchronen. Die Schaltungsanordnung wird ferner abgefragt, um zu ermitteln, ob der Datenpuffereingang D gesetzt ist oder nicht und die Sequenz wird fortgesetzt. Das heißt, wenn D gesetzt ist, was anzeigt, daß der Zähler in dem 1-aus-4-Pfad ausgezählt hat, zeigt dies einen Zweipuls-Fehlerzustand, in dem ein Puls "früh" und ein Puls "spät" ist. Der "frühe" Puls wird identifiziert und ersetzt und die Routine fährt dann fort zum Ende.
  • Wenn der Datenpuffereingang B nicht gesetzt ist, dann wird der Datenpuffereingang C, der dem Zähler in dem 2-aus-4- Pfad zugeordnet ist, abgefragt. Wenn C gesetzt ist- zeigt dies einen Fehler von zwei Syncpulsen, bei dem zwei Pulse nicht angekommen sind. Die fehlenden Syncpulse werden von dem Status ihrer zugeordneten Verriegelungen identifiziert, und diese Information wird in dem Prozessor gespeichert.
  • Ein Zweipulsfehler, in dem zwei Pulse nicht angekommen sind, ist uneindeutig in dem Sinne, daß nicht gewiß ist, ob zwei Pulse "früh" oder zwei Pulse "spät" angekommen sind. Die Supervisor-Software-Routine ist so ausgelegt, daß sie diese Situation ermittelt und korrigiert. Wenn die identifizierte Situation zuvor nicht aufgetreten ist, wird der eine Prozessor, der auf entsprechende Weise dem "frühen" Paar zugeordnet ist, und der eine mit dem "späten" Paar ersetzt. Am Ende des nächsten Nebenrahmens wird der verbleibende der zwei Prozessoren in einem der Paare weiterhin nicht synchron sein und somit anzeigen, ob das eine Paar "spät" oder das eine Paar "früh" ist. Der verbleibende fehlerhafte Prozessor wird in der nächsten Iteration ersetzt, wodurch das System innerhalb von drei Nebenrahmen geheilt wird. Wenn jedoch die Supervisor-Routine zeigt, daß dieses Fehlermuster zuvor aufgetreten ist, dann wird daraus der Schluß gezogen, daß entweder die Synchronisierer oder die zugeordneten Prozessoren fehlerhaft sind und sie werden sofort außer Betrieb genommen und gegen zwei "gesunde" und synchrone Prozessoren ersetzt.
  • Wenn das Interruptsignal durch den Überwachungsmonitor 88 initiiert worden ist, zeigt die Supervisor-Routine, daß der Datenpuffereingang C, der dem 2-aus-4-Pfad zugeordnet ist, nicht gesetzt ist, wodurch angezeigt wird, daß der Synchronisierer fehlerhaft ist und der zugeordnete Prozessor wird entfernt.
  • Typischer Betrieb
  • Die Zähler in den Synchronisationspfaden, die 16-Bit Zähler sind, die von 8 MHz Taktpulsen betätigt werden, generieren ein "Zeitfenster" von zwei (2) Mikrosekunden; d. h. sie haben nach zwei Mikrosekunden ausgezählt. Der Zähler 55 beginnt seine Zählung, wenn der erste Syncpuls ankommt und das AND-Gatter 75 der 1-aus-4-Syncentscheidungslogik in den logischen Zustand NULL geht, wodurch das OR-Gatter 52 freigegeben wird, um Taktpulse von dem AND-Gatter 73 zum Zähler durchzulassen. Wenn ein zweiter Syncpuls innerhalb des zwei Mikrosekunden "Zeitfensters" ankommt, sperrt die 2-aus-4- Logik den Zähler 55, weil der invertierende Verstärker 85 das OR-Gatter 52 sperrt und Taktpulse für den Zähler 55 blockiert.
  • Wenn ein dritter Syncpuls nicht innerhalb von zwei Mikrosekunden von dem zweiten ankommt, läuft der Zähler 56 ab und sein Ausgang geht auf NULL. Dies bewirkt, daß der Ausgang des AND-Gatters 62 nach NULL geht und den digitalen Univibrator 63 triggert. Wenn der dritte Syncpuls innerhalb des zwei Mikrosekunden "Fensters" ankommt, sperrt die 3-aus-4- Entscheidungslogikschaltung, wie sie durch das AND-Gatter 77 dargestellt ist, den Zähler 56, weil der invertierende Verstärker 76 das steuernde OR-Gatter 53 blockiert.
  • Wenn der Ausgang des AND-Gatters 77 in dem 3-aus-4-Pfad nach NULL geht, wird das OR-Gatter 54 freigegeben und der Zähler 57 in diesem Pfad beginnt zu zählen. Wenn der vierte Syncpuls nicht innerhalb von zwei Mikrosekunden ankommt, läuft der Zähler 57 ab und generiert einen Interruptpuls durch das AND-Gatter 62 und den digitalen Univibrator 63. Wenn der vierte Puls innerhalb von zwei Mikrosekunden ankommt, ändert das OR-Gatter 62 in dem 4-aus-4-Logikpfad seinen Zustand und sperrt das OR-Gatter 54 durch den invertierenden Verstärker 87. Jedoch generiert die Ankunft des vierten Pulses innerhalb des "Zeitfensters" selbst einen Interruptpuls, indem er das AND-Gatter 62 betätigt, um den digitalen Univibrator 58 zu triggern. Zusammenfassend wird ein Interruptpuls generiert, wenn entweder der Zähler in den 2- oder 3-aus-4-Pfaden ablaufen oder wenn der Ausgang der 4-aus-4-Entscheidungslogikschaltung in den logischen Zustand NULL geht.
  • Jedes dieser Interruptsignale initiiert dann die Nebenrahmen-Interrupt-Software-Serviceroutine, die dann den Status des Synchronisierers und der einzelnen Syncpulse prüft, indem die in dem Syncpuffer 54 gespeicherten Daten abgefragt werden.
  • Aus der vorstehenden Beschreibung wird deutlich, daß die Erfindung ein höchst flexibles, fehlertolerantes Multiprozessor-Synchronisierungssystem bildet. Die Synchronisation auf dem Nebenrahmenpegel wird durch eine Kombination von Hardware und einer lokalen Software-Supervisor-Routine herbeigeführt.

Claims (6)

1. Multiprozessorsystem, das bei spezifischen, sich wiederholenden, rechnerischen Zeitrahmenperioden synchronisiert ist, während denen wenigstens ein gewisser Teil des Programms ausgeführt wird, enthaltend: - mehrere Prozessoren (10, 11, 12, 14), die jeweils enthalten: - eine Einrichtung zum Erzeugen eines Synchronisierpulses am Ende von jeder Rahmenperiode und zum Übertragen des Pulses über bestehende Kommunikationsleitungen (21-24) zwischen den Prozessoren, - eine Synchronisierungseinrichtung (48-50) zum Empfangen von Pulsen von seiner eigenen Pulserzeugungseinrichtung und von den Pulserzeugungseinrichtungen aller anderen Prozessoren, - eine Synchronisierungspuls-Logikschaltung (52-57) zum Ermitteln, ob eine Mehrheit der Synchronisierungspulse innerhalb eines vorbestimmten Zeitintervalls empfangen worden ist, - eine Einrichtung (42), die mit jeder der Synchronisierungspuls-Logikschaltungen verbunden ist, zum Speichern von Fehlerstatusinformation über jeden der Synchronisierungspulse, - eine Einrichtung (41) zum Erzeugen eines Steuersignals als Antwort auf den Status der Synchronisierungspuls- Logikschaltung, wenn alle Synchronisierungspulse innerhalb des vorbestimmten Intervalles ankommen, und - eine Einrichtung (64), zum Zuführen des Steuersignals zum Prozessor, um eine Supervisor- bzw. Überwachungssoftwareroutine zu initiieren, die:
1. die Speichereinrichtung abfragt bezüglich des Ankunftsstatus der Synchronisierungspulse,
2. jeden fehlerhaften Synchronisierungspuls oder -pulse und den zugeordneten Prozessor identifiziert, dadurch gekennzeichnet, daß - die Synchronisierungseinrichtung (34-41; 48-51) zur Verwendung bei der Synchronisation von n Prozessoren aus einer Anzahl N Prozessoren wählt, welche n Prozessoren Rechenaktivitäten zu einer gegebenen Zeit ausführen, - die Einrichtung (41) zum Erzeugen des Steuersignales dieses erzeugt, wenn mehr als ein Synchronisierungspuls innerhalb des Intervalls nicht ankommt, und - die Einrichtung (64) zum Initiieren einer Überwachungssoftwareroutine nicht im Synchroninismus befindliche Prozessoren auswechselt, wobei die Situation, in der innerhalb des vorbestimmten Zeitintervalls zwei Pulse nicht ankamen, gelöst wird durch Identifizieren und Ersetzen des Prozessors, dessen Puls nach dem vorbestimmten Zeitintervall ankam, während einer zweiten Rahmenperiode und des verbleibenden Prozessors während einer dritten Rahmenperiode.
2. Multiprozessorsystem nach Anspruch 1, wobei die Überwachungssoftwareroutine für die Statusabfrage der Speichereinrichtung sequentiell ermittelt, ob:
a. alle Synchronisierungspulse angekommen sind, und anschließend, ob ein Puls mehr als das Intervall früher war,
b. alle Pulse bis auf einen in dem Intervall angekommen sind,
c. alle Pulse bis auf zwei in dem Intervall angekommen sind.
3. Multiprozessorsystem nach Anspruch 1, wobei die Synchronisierungspuls-Entscheidungslogikschaltung (52-57) separate Pfade enthält, die auf entsprechende Weise bei der Ankunft von 1-aus-N, 2-aus-N . . . und N-aus-N Synchronisierungspulsen innerhalb des Zeitintervalls betätigt werden, das Steuersignal als Antwort auf alle Pfade, außer dem 1- aus-N-Pfad, generiert wird, jeder Pulspfad, außer dem N- aus-N-Pfad, durch einen nächst höheren Pulspfad gesperrt wird, wenn der nächst höhere Pulspfad seine entsprechenden Pulse empfängt.
4. Multiprozessorsystem nach Anspruch 3, wobei jeder Entscheidungslogikpfad, außer dem N-aus-N-Pfad, Zeitsteuereinrichtungen enthält, die jeweils das vorbestimmte Zeitintervall bei Empfang einer richtigen Anzahl von Pulsen für den Pfad initiieren, wobei die Zeitsteuereinrichtung gesperrt wird, wenn ein nächst höherer Pulspfad durch die Ankunft der Anzahl von Pulsen betätigt wird, die zum Betätigen der Zeitsteuereinrichtung in diesem nächsten Pfad erforderlich ist, wobei die Zeitsteuereinrichtung in den Entscheidungslogikpfaden durch Zeitablauf sperren, um das Steuersignal zu erzeugen, wenn sie nicht abgeschaltet werden.
5. Multiprozessorsystem nach Anspruch 1, wobei die Einrichtung (41) zum Erzeugen des Steuersignals nicht betätigt wird, wenn ein Synchronisierungspuls um ein Zeitintervall früher als alle anderen ankommt, das größer als das vorbestimmte Zeitintervall ist.
6. Multiprozessorsystem nach Anspruch 1, wobei die Einrichtung (41) zum Erzeugen des Steuersignals nicht betätigt wird, wenn ein Synchronisierungspuls um ein Zeitintervall früher als alle anderen ankommt, das größer als das vorbestimmte Intervall ist, aber betätigt wird, wenn ein Synchronisierungspuls um ein Zeitintervall später als alle anderen ankommt, das größer als das vorbestimmte Intervall ist.
DE85902392T 1984-05-31 1985-05-06 Fehlertolerante rahmensynchronisation für mehrprozessorsysteme. Expired - Fee Related DE3587284T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/615,965 US4589066A (en) 1984-05-31 1984-05-31 Fault tolerant, frame synchronization for multiple processor systems

Publications (2)

Publication Number Publication Date
DE3587284D1 DE3587284D1 (de) 1993-05-27
DE3587284T2 true DE3587284T2 (de) 1993-12-02

Family

ID=24467490

Family Applications (1)

Application Number Title Priority Date Filing Date
DE85902392T Expired - Fee Related DE3587284T2 (de) 1984-05-31 1985-05-06 Fehlertolerante rahmensynchronisation für mehrprozessorsysteme.

Country Status (5)

Country Link
US (1) US4589066A (de)
EP (1) EP0182816B1 (de)
JP (1) JPS6121562A (de)
DE (1) DE3587284T2 (de)
WO (1) WO1985005707A1 (de)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4696008A (en) * 1983-12-02 1987-09-22 Canon Kabushiki Kaisha Data storing device having position determining means
US4696019A (en) * 1984-09-19 1987-09-22 United Technologies Corporation Multi-channel clock synchronizer
US4742520A (en) * 1984-09-26 1988-05-03 Texas Instruments Incorporated ALU operation: modulo two sum
US5168520A (en) * 1984-11-30 1992-12-01 Security Dynamics Technologies, Inc. Method and apparatus for personal identification
US4885778A (en) * 1984-11-30 1989-12-05 Weiss Kenneth P Method and apparatus for synchronizing generation of separate, free running, time dependent equipment
US4998279A (en) * 1984-11-30 1991-03-05 Weiss Kenneth P Method and apparatus for personal verification utilizing nonpredictable codes and biocharacteristics
US5367572A (en) * 1984-11-30 1994-11-22 Weiss Kenneth P Method and apparatus for personal identification
US4700346A (en) * 1985-05-10 1987-10-13 Tandem Computers Incorporated Self-checking, dual railed, leading edge synchronizer
US4811283A (en) * 1985-05-31 1989-03-07 Hewlett-Packard Company Recovery system for queued data transfer synch. loss utilizing error flag and status memories
US4942523A (en) * 1985-05-31 1990-07-17 Hewlett-Packard Company Method for recovery from synchronization loss in a queued data transfer
US4757442A (en) * 1985-06-17 1988-07-12 Nec Corporation Re-synchronization system using common memory bus to transfer restart data from non-faulty processor to failed processor
US4710926A (en) * 1985-12-27 1987-12-01 American Telephone And Telegraph Company, At&T Bell Laboratories Fault recovery in a distributed processing system
JPS6345670A (ja) * 1986-08-13 1988-02-26 Hitachi Ltd プロセツサ間同期装置
CN1008018B (zh) * 1986-09-27 1990-05-16 徐肇昌 一种具有合作能力的同构型多计算机系统及其合作方法
US4845522A (en) * 1986-11-04 1989-07-04 Hiroyuki Kataoka Data communication system for camera system
US5020024A (en) * 1987-01-16 1991-05-28 Stratus Computer, Inc. Method and apparatus for detecting selected absence of digital logic synchronism
US5185877A (en) * 1987-09-04 1993-02-09 Digital Equipment Corporation Protocol for transfer of DMA data
EP0306211A3 (de) * 1987-09-04 1990-09-26 Digital Equipment Corporation Synchronisiertes Doppelrechnersystem
CA2003338A1 (en) * 1987-11-09 1990-06-09 Richard W. Cutts, Jr. Synchronization of fault-tolerant computer system having multiple processors
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US4937741A (en) * 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US5204952A (en) * 1988-07-18 1993-04-20 Northern Telecom Limited Duplex processor arrangement for a switching system
JPH0797328B2 (ja) * 1988-10-25 1995-10-18 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン フオールト・トレラント同期システム
US5123047A (en) * 1988-12-09 1992-06-16 The Exchange System Limited Partnership Method of updating encryption device monitor code in a multichannel data encryption system
AU625293B2 (en) * 1988-12-09 1992-07-09 Tandem Computers Incorporated Synchronization of fault-tolerant computer system having multiple processors
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5128996A (en) * 1988-12-09 1992-07-07 The Exchange System Limited Partnership Multichannel data encryption device
US5117442A (en) * 1988-12-14 1992-05-26 National Semiconductor Corporation Methods and circuits for synchronizing signals in a modular redundant fault tolerant computer system
US5270931A (en) * 1989-02-23 1993-12-14 The Boeing Company Software controlled aircraft component configuration system
EP0394514B1 (de) * 1989-04-25 1994-07-13 Siemens Aktiengesellschaft Verfahren zur Synchronisation von Datenverarbeitungsanlagen
US5153881A (en) * 1989-08-01 1992-10-06 Digital Equipment Corporation Method of handling errors in software
US5251227A (en) * 1989-08-01 1993-10-05 Digital Equipment Corporation Targeted resets in a data processor including a trace memory to store transactions
US5163138A (en) * 1989-08-01 1992-11-10 Digital Equipment Corporation Protocol for read write transfers via switching logic by transmitting and retransmitting an address
US5068780A (en) * 1989-08-01 1991-11-26 Digital Equipment Corporation Method and apparatus for controlling initiation of bootstrap loading of an operating system in a computer system having first and second discrete computing zones
US5163052A (en) * 1989-10-12 1992-11-10 Ncr Corporation High reliability computer diagnostics system
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5203004A (en) * 1990-01-08 1993-04-13 Tandem Computers Incorporated Multi-board system having electronic keying and preventing power to improperly connected plug-in board with improperly configured diode connections
US6816872B1 (en) 1990-04-26 2004-11-09 Timespring Software Corporation Apparatus and method for reconstructing a file from a difference signature and an original file
WO1992003785A1 (de) * 1990-08-14 1992-03-05 Siemens Aktiengesellschaft Einrichtung zur funktionsüberwachung externer synchronisations-baugruppen in einem mehrrechnersystem
US5978831A (en) * 1991-03-07 1999-11-02 Lucent Technologies Inc. Synchronous multiprocessor using tasks directly proportional in size to the individual processors rates
US5732164A (en) * 1991-05-23 1998-03-24 Fujitsu Limited Parallel video processor apparatus
JP3040529B2 (ja) * 1991-05-23 2000-05-15 富士通株式会社 動画像処理装置
US5237614A (en) * 1991-06-07 1993-08-17 Security Dynamics Technologies, Inc. Integrated network security system
US5421002A (en) * 1991-08-09 1995-05-30 Westinghouse Electric Corporation Method for switching between redundant buses in a distributed processing system
US5506964A (en) * 1992-04-16 1996-04-09 International Business Machines Corporation System with multiple interface logic circuits including arbitration logic for individually linking multiple processing systems to at least one remote sub-system
GB2266979A (en) * 1992-05-12 1993-11-17 Apple Computer Phase register for synchronization of multiple signal processors.
DE4219005A1 (de) * 1992-06-10 1993-12-16 Siemens Ag Rechnersystem
US6157967A (en) * 1992-12-17 2000-12-05 Tandem Computer Incorporated Method of data communication flow control in a data processing system using busy/ready commands
US5838894A (en) * 1992-12-17 1998-11-17 Tandem Computers Incorporated Logical, fail-functional, dual central processor units formed from three processor units
CA2153052A1 (en) * 1993-02-26 1994-09-01 Frederick L. Smith Synchronization arbitration technique and apparatus
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5522029A (en) * 1993-04-23 1996-05-28 International Business Machines Corporation Fault tolerant rendezvous and semaphore for multiple parallel processors
US5388102A (en) * 1993-07-01 1995-02-07 At&T Corp. Arrangement for synchronizing a plurality of base stations
US5812757A (en) * 1993-10-08 1998-09-22 Mitsubishi Denki Kabushiki Kaisha Processing board, a computer, and a fault recovery method for the computer
US5727184A (en) * 1994-06-27 1998-03-10 Cirrus Logic, Inc. Method and apparatus for interfacing between peripherals of multiple formats and a single system bus
US5812858A (en) * 1994-09-16 1998-09-22 Cirrus Logic, Inc. Method and apparatus for providing register and interrupt compatibility between non-identical integrated circuits
US5742753A (en) * 1996-06-06 1998-04-21 The Boeing Company Mesh interconnected array in a fault-tolerant computer system
DE19626184C2 (de) * 1996-06-29 1998-07-30 Alexander Ernst Erdwin Lahmann Vorrichtung zum Betreiben eines Systems mit zwei funktionsmäßig in einem Rechner parallel geschalteten Prozessoren
US5784386A (en) * 1996-07-03 1998-07-21 General Signal Corporation Fault tolerant synchronous clock distribution
US5801783A (en) * 1996-10-31 1998-09-01 Lucent Technologies Inc. Remote accurate frequency generation using a numerically controlled oscillator
US5983371A (en) * 1997-07-11 1999-11-09 Marathon Technologies Corporation Active failure detection
US6370657B1 (en) * 1998-11-19 2002-04-09 Compaq Computer Corporation Hot processor swap in a multiprocessor personal computer system
US6631483B1 (en) 1999-06-08 2003-10-07 Cisco Technology, Inc. Clock synchronization and fault protection for a telecommunications device
US6683848B1 (en) * 1999-06-08 2004-01-27 Cisco Technology, Inc. Frame synchronization and fault protection for a telecommunications device
US7350116B1 (en) 1999-06-08 2008-03-25 Cisco Technology, Inc. Clock synchronization and fault protection for a telecommunications device
US6687851B1 (en) * 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
US6901481B2 (en) 2000-04-14 2005-05-31 Stratus Technologies Bermuda Ltd. Method and apparatus for storing transactional information in persistent memory
US6802022B1 (en) 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US6691225B1 (en) 2000-04-14 2004-02-10 Stratus Technologies Bermuda Ltd. Method and apparatus for deterministically booting a computer system having redundant components
US6587800B1 (en) * 2000-06-30 2003-07-01 Intel Corporation Reference timer for frequency measurement in a microprocessor
US6813721B1 (en) * 2000-09-20 2004-11-02 Stratus Computer Systems, S.A.R.L. Methods and apparatus for generating high-frequency clocks deterministically from a low-frequency system reference clock
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US7155721B2 (en) * 2002-06-28 2006-12-26 Hewlett-Packard Development Company, L.P. Method and apparatus for communicating information between lock stepped processors
GB2411270B (en) * 2002-07-03 2005-12-21 Hewlett Packard Development Co Method and apparatus for recovery from loss of lock step
US7085959B2 (en) * 2002-07-03 2006-08-01 Hewlett-Packard Development Company, L.P. Method and apparatus for recovery from loss of lock step
GB2396446B (en) * 2002-12-20 2005-11-16 Picochip Designs Ltd Array synchronization
US7404105B2 (en) 2004-08-16 2008-07-22 International Business Machines Corporation High availability multi-processor system
GB2454865B (en) * 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
GB2466661B (en) * 2009-01-05 2014-11-26 Intel Corp Rake receiver
US8024069B2 (en) 2009-01-28 2011-09-20 Ge Intelligent Platforms, Inc. System and method for path planning
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
EP2657797B1 (de) * 2012-04-27 2017-01-18 Siemens Aktiengesellschaft Verfahren zum Betreiben eines redundanten Automatisierungssystems
US9342358B2 (en) 2012-09-14 2016-05-17 General Electric Company System and method for synchronizing processor instruction execution
US9256426B2 (en) 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
CN104268037A (zh) * 2014-09-10 2015-01-07 上海自仪泰雷兹交通自动化系统有限公司 热冗余联锁子系统及其主备切换方法
SG11202111296TA (en) 2019-04-25 2021-11-29 Aerovironment Inc Methods of climb and glide operations of a high altitude long endurance aircraft
US20220122385A1 (en) * 2019-04-25 2022-04-21 Aerovironment, Inc. Systems And Methods For Distributed Control Computing For A High Altitude Long Endurance Aircraft
WO2021011045A2 (en) * 2019-04-25 2021-01-21 Aerovironment, Inc. Ground support equipment for a high altitude long endurance aircraft
US10924091B2 (en) 2019-07-02 2021-02-16 Stmicroelectronics International N.V. Immediate fail detect clock domain crossing synchronizer
CN110686670B (zh) * 2019-09-25 2023-04-28 天津津航计算技术研究所 一种嵌入式系统的双路导航通讯装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3665173A (en) * 1968-09-03 1972-05-23 Ibm Triple modular redundancy/sparing
FR1587572A (de) * 1968-10-25 1970-03-20
US3566280A (en) * 1969-03-07 1971-02-23 Martin Marietta Corp Digital communications clock synchronizer for responding to pulses of predetermined width and further predictable pulses of sufficient energy level during particular interval
DE2202231A1 (de) * 1972-01-18 1973-07-26 Siemens Ag Verarbeitungssystem mit verdreifachten systemeinheiten
CH556576A (de) * 1973-03-28 1974-11-29 Hasler Ag Einrichtung zur synchronisierung dreier rechner.
US3932847A (en) * 1973-11-06 1976-01-13 International Business Machines Corporation Time-of-day clock synchronization among multiple processing units
JPS5814692B2 (ja) * 1978-06-16 1983-03-22 日本国有鉄道 多重系同期運転方式
DE2939487A1 (de) * 1979-09-28 1981-04-16 Siemens AG, 1000 Berlin und 8000 München Rechnerarchitektur auf der basis einer multi-mikrocomputerstruktur als fehlertolerantes system
US4342083A (en) * 1980-02-05 1982-07-27 The Bendix Corporation Communication system for a multiple-computer system
US4323966A (en) * 1980-02-05 1982-04-06 The Bendix Corporation Operations controller for a fault-tolerant multiple computer system
US4375683A (en) * 1980-11-12 1983-03-01 August Systems Fault tolerant computational system and voter circuit
US4404675A (en) * 1981-04-27 1983-09-13 Gte Automatic Electric Incorporated Frame detection and synchronization system for high speed digital transmission systems
US4503490A (en) * 1981-06-10 1985-03-05 At&T Bell Laboratories Distributed timing system

Also Published As

Publication number Publication date
WO1985005707A1 (en) 1985-12-19
US4589066A (en) 1986-05-13
EP0182816B1 (de) 1993-04-21
EP0182816A1 (de) 1986-06-04
EP0182816A4 (de) 1987-03-30
DE3587284D1 (de) 1993-05-27
JPS6121562A (ja) 1986-01-30

Similar Documents

Publication Publication Date Title
DE3587284T2 (de) Fehlertolerante rahmensynchronisation für mehrprozessorsysteme.
DE3587405T2 (de) Modulare mehrkanalsynchronisierungseinrichtung.
DE2946081C3 (de) Schaltungsanordnung zur Überwachung der Funktion eines Mikroprozessors
DE60302184T2 (de) Fehlertolerantes Computersystem, Verfahren zur Resynchronisierung desselben und zugehöriges Resynchronisierungs-Programm
DE69116493T2 (de) Schaltung und Verfahren zur Bestimmung der Länge des Zeitintervalls zwischen zwei Signalen
DE68923845T2 (de) Synchronisierte fehlertolerante Uhren für Multiprozessorsysteme.
DE3300260C2 (de)
DE3751231T2 (de) Symmetriebildung für redundante Kanäle.
DE69016169T2 (de) Leitungschnittstelle für ein Nachrichtenübertragungsnetz.
DE2838549A1 (de) Impulsbreitenmesschaltung
EP0476160A1 (de) Einrichtung zur Erzeugung von Messsignalen mit einer Mehrzahl von redundant vorgesehenen Sensoren
DE69114328T2 (de) Überwachung von Mikroprozessoren.
DE3852721T2 (de) Einrichtung zum dynamischen Schalten der Taktquelle eines Datenverarbeitungssystems.
DE3111555C2 (de) Verfahren und Vorrichtung zur Informationsspeicherung unter Anwendung früherer Aufzeichnung
DE3686902T2 (de) Selbstpruefender zweikanal-anstiegsflanken-synchronisierer.
EP0564923B1 (de) Verfahren und Vorrichtung zur Phasenmessung
DE69522871T2 (de) Verbesserter Zeitgeber für Datenprozessoren
DE60104336T2 (de) Fehlertolerante synchronisationseinrichtung für ein echtzeit-computernetzwerk
DE2120289A1 (de) Gesteuerte Pause in einer Datenverarbeitungsanlage
DE3888469T2 (de) Detektion von Synchronisationsstörungen.
DE2801517C2 (de)
DE2749668A1 (de) Pruefeinrichtung
DE2727983C2 (de) Schaltungsanordnung mit mindestens doppelt vorgesehenen zentralen Steuerungen, insbesondere für Fernsprechvermittlungsanlagen
DE2725922C2 (de) Mehrrechnersystem zur Steuerung von trassengebundenen Verkehrsmitteln
EP0172569A2 (de) Verfahren zur Synchronisation mehrerer parallelarbeitender Rechner

Legal Events

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