EP0447576A1

Synchronization of fault-tolerant computer system having multiple processors.

Abstract

A computer system in a fault-tolerant configuration employs three identical CPUs executing the same instruction stream, with two identical, self-checking memory modules storing duplicates of the same data. Memory references by the three CPUs are made by three separate busses connected to three separate ports of each of the two memory modules. The three CPUs are loosely synchronized, as by detecting events such as memory references and stalling any CPU ahead of others until all execute the function simultaneously; interrupts can be synchronized by ensuring that all three CPUs implement the interrupt at the same point in their instruction stream. Memory references via the separate CPU-to-memory busses are voted at the three separate ports of each of the memory modules. I/O functions are implemented using two identical I/O busses, each of which is separately coupled to only one of the memory modules. A number of I/O processors are coupled to both I/O busses.

EP0447576A1, drawing sheet 1
Sheet 1 of 24

Term

Term ended

Projected expiry passed 19 March 2010, 16.5 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

50 claims: 13 independent, 37 dependent

  1. 1
    A multiple CPU system, comprising:a) a plurality of CPUs executing an instruction stream, the CPUs each being clocked independently of one another to provide separate machine cycles for each CPU, said machine cycles including execution cycles where an instruction of said instruction stream is executed and stall cycles where an instruction of said instruction stream is not executed, each CPU having a memory request input/output port;b) a common memory coupled to the input/output ports of said CPUs, the common memory implementing a memory request only after receiving the same request from all of said CPUs, the memory sending an acknowledge signal to the CPUs when implementing a memory request, each of the CPUs executing stall cycles while awaiting implementation of a memory request by the common memory as signalled by said acknowledge signal;c) each of the CPUs having a counter to count execution cycles but not stall cycles;andd) said CPUs having an interrupt circuit responsive to an external interrupt request and coupled to said counters in said CPUs and responsive to a selected count in each of said counters for separately interrupting each CPU at the same execution cycle while other of said CPUs continue to execute instructions.
  2. 3
    A multiple CPU system with synchronization of external interrupts, comprising:a) a plurality of CPUs independently executing the same instruction stream, the CPUs each being clocked independently of one another to provide execution cycles during which instructions of said instruction stream are executed and to provide stall cycles during which instructions are not executed;b) each of the CPUs having a counter to count said execution cycles but not stall cycles;c) and an interrupt circuit connected to all of said CPUs and responsive to an external interrupt request, said interrupt circuit being responsive to a selected count in each of said counters for interrupting each CPU separately at the same execution cycle in said instruction stream.
  3. 5
    A multiple CPU system, comprising:a) a plurality of CPUs each executing an instruction stream, the CPUs being clocked independently of one another to provide execution cycles,b) each of the CPUs having a counter to count execution cycles;c) and an interrupt circuit connected to each of said CPUs and responsive to an external interrupt request, said interrupt circuit being responsive to a selected count in each of said counters for separately interrupting each CPU at the same execution cycle in said instruction stream.
  4. 7
    A multiple CPU system, comprising:a) a plurality of CPUs, each of the CPUs independently executing the same instruction stream, the CPUs being clocked independently of one another to provide execution cycles, the CPUs each having an input/output port, at least one shared input/output device being coupled to said input/output ports of the plurality of CPUs;b) each of the CPUs having a modulo N counter to count execution cycles;c) and an interrupt circuit coupled to each of said CPUs and responsive to an external interrupt request, said interrupt circuit being correlated with said counters for applying an interrupt separately to each CPU at a preset count value of each of the counters, whereby each CPU is interrupted at the same execution cycle in said instruction stream.
  5. 9
    A computer system comprising:a) a plurality of CPUs each executing an instruction stream, the CPUs being clocked independently of one another to define execution cycles;b) each of the CPUs having counting means to count events related to execution cycles;c) each CPU having a synchronizing circuit responsive to an externally-applied request applied to all of said CPUs, said synchronizing circuit for each CPU receiving input from all of said CPUs, for separately signalling each one of the CPUs at the same point in said instruction stream in response to said externally-applied request, the synchronizing circuit for each of said CPUs also responsive to said counting means indicating a selected maximum count and responsive to information from the other CPUs for causing the CPU to begin execution at the same execution cycle in said instruction stream.
  6. 23
    A method of operating a computer system having a plurality of separately-clocked CPUs, comprising the steps of:a) executing the same instruction stream on each of said CPUs;b) counting the instructions executed on each of said CPUs;c) detecting an external interrupt request and applying an interrupt signal separately to each one of the CPUs at a selected instruction count while the other of the CPUs continue to execute instructions.
  7. 27
    Apparatus for synchronizing a plurality of processors, comprising:event detecting means in each one of said processors producing an indication of the occurrence of a selected type of event within the processor;event counting means responsive to said indication for counting the number of events for each one of said processors;and    means responsive to said event counting means for altering processing of each one of said processors if the number of events counted for one of the processors is greater than the number of events counted for other of said processors.
  8. 29
    Apparatus according the claim 28 wherein said event counter is a cycle counter.
  9. 34
    Apparatus for synchronizing a plurality of processors comprising, for each processor:event counting means, connected to the processor for counting the number of occurrences of a prescribed event;comparison means connected for receiving signals for the event counting means for each processor;and    synchronization means, connected to receive a sync request input signal and to the event counter, and responsive to said comparison means, for suspending processing of a processor in response to a synchronization request signal until the number of events counted to each processor is equal to the number of events counted for other processors.
  10. 37
    A fault-tolerant computer system comprising:a) multiple processors, each executing the same instruction stream, each processor having an independent clock, and each processor having a memory independent of the other processors;b) a plurality of vote circuits, each one of the vote circuits separately receiving output data from each one of the processors, and producing a voter output to I/O means only when multiple processors have sent the same data output.
  11. 41
    A method of operating a multiple processor system comprising the steps of:a) clocking each of said processors independent of one another;b) executing the same instruction stream in each one of the processors;c) storing data for each processor in a separate memory not accessible by the other processors;d) presenting output data to an output port of each processor;e) detecting the output data in all said ports in a vote circuit and voting said output data to pass on the output data that is the same from multiple processors to I/O means.
  12. 44
    A method of operating a computer system comprising the steps of:a) executing the same instruction stream in at least first and second processors;b) generating remote accesses in each of said first and second processors, the remote accesses being directed to separate first and second access ports;c) detecting each one of said remote accesses at said first and second access ports, waiting until a remote access is detected at both the first and second access ports, then voting said remote accesses and passing along said remote accesses if both are the same.
  13. 47
    A computer system comprising:a) first and second processors executing the same instruction stream;b) means generating remote accesses in each of said first and second processors, the remote accesses being directed to separate first and second access ports;c) separate voter means detecting each one of said remote accesses at said first and second access ports, the voter means waiting until a remote access is detected at both the first and second access ports before voting said remote accesses and passing along said remote accesses if both are the same.