Interrupts between asynchronously operating CPUs in fault tolerant computer system
First Claim
1. A multiple CPU system, comprising:
- a) a plurality of CPUs concurrently executing a same instruction stream, the CPUs being the only CPUs in the multiple CPU system and wherein all of the CPUs in the multiple CPU system are clocked independently of one another to provide separate machine clock cycles for each CPU, so that said instruction stream is executed asynchronously over plural instructions and any of said CPUs may be leading other of said CPUs, said machine clock 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 identical requests 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 signaled by said acknowledge signal;
c) each of the CPUs having a counter to count machine clock cycles corresponding to execution cycles but which is inhibited from counting machine clock cycles corresponding to stall cycles; and
d) all of said CPUs in the system having an interrupt circuit responsive to an external interrupt request occurring at any time unsynchronized with said execution of said instruction stream, said interrupt circuit being coupled to said counters in said CPUs and responsive to a selected count in each of said counters for separately interrupting each CPU at an identical instruction execution cycle, any one of the CPUs which may be leading being interrupted first while other of said CPUs continue to execute instructions so that if said CPUs are executing different instructions in said stream then said CPUs may be interrupted at different instants in real time.
4 Assignments
0 Petitions
Accused Products
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.
-
Citations
23 Claims
-
1. A multiple CPU system, comprising:
-
a) a plurality of CPUs concurrently executing a same instruction stream, the CPUs being the only CPUs in the multiple CPU system and wherein all of the CPUs in the multiple CPU system are clocked independently of one another to provide separate machine clock cycles for each CPU, so that said instruction stream is executed asynchronously over plural instructions and any of said CPUs may be leading other of said CPUs, said machine clock 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 identical requests 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 signaled by said acknowledge signal; c) each of the CPUs having a counter to count machine clock cycles corresponding to execution cycles but which is inhibited from counting machine clock cycles corresponding to stall cycles; and d) all of said CPUs in the system having an interrupt circuit responsive to an external interrupt request occurring at any time unsynchronized with said execution of said instruction stream, said interrupt circuit being coupled to said counters in said CPUs and responsive to a selected count in each of said counters for separately interrupting each CPU at an identical instruction execution cycle, any one of the CPUs which may be leading being interrupted first while other of said CPUs continue to execute instructions so that if said CPUs are executing different instructions in said stream then said CPUs may be interrupted at different instants in real time. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A multiple CPU system with synchronization of external interrupts, comprising:
-
a) a plurality of CPUs independently and concurrently executing the same instruction stream, the CPUs being the only CPUs in the multiple CPU system and wherein all of the CPUs in the multiple CPU system are each clocked independently of one another by respective independent machine clock cycles so that said instruction stream is executed asynchronously over plural instructions and any one of said CPUs may lead or lag other of said CPUs, to provide execution cycles during which instructions of said same instruction stream are executed and to provide stall cycles during which instructions are not executed; b) each of the CPUs having a counter counting only machine clock cycles corresponding to said execution cycles and which is inhibited from counting machine clock cycles corresponding to stall cycles; and c) and an interrupt circuit connected to all of said CPUs in the multiple CPU system and responsive to an external interrupt request occurring at any time uncorrelated with which CPU is leading or lagging in said executing of said instruction stream, said interrupt circuit being responsive to a selected count in each of said counters for interrupting each CPU in the multiple CPU system separately at a same execution cycle in said instruction stream without stalling a CPU which may be leading another of the CPUs. - View Dependent Claims (7, 8)
-
-
9. A multiple CPU system, comprising:
-
a) a plurality of CPUs concurrently executing a same instruction stream, the CPUs being the only CPUs in the multiple CPU system and wherein all of the CPUs in the multiple CPU system are clocked independently of one another by respective independent machine clock cycles to provide execution cycles during which instructions are executed and stall cycles during which instructions are not executed, so that said instruction stream is executed asynchronously over plural instructions and any one of the CPUs may be leading or lagging other of said CPUs, b) each of the CPUs in the multiple CPU system having counter means for counting machine clock cycles but inhibiting counting during clock cycles corresponding to stalls to provide a count corresponding to execution cycles but not stall cycles; and c) and an interrupt circuit connected to each of said CPUs in the multiple CPU system and responsive to an external interrupt request separate from and not correlated with which CPU may be leading in executing said instruction stream, said interrupt circuit being responsive to a selected count in each of said counter means for separately interrupting each CPU in the multiple CPU system at a same execution cycle in said instruction stream, a leading one of said CPUs continuing to execute instructions without being stalled by said interrupt circuit even if others of the CPUs are executing earlier instructions from said instruction stream. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A multiple CPU system, comprising:
-
a) a plurality of CPUs, each of the CPUs independently and concurrently executing a same instruction stream, the CPUs being the only CPUs in the multiple CPU system and wherein all of the CPUs in the multiple CPU system are clocked independently of one another in accordance with respective independent machine clock cycles to provide execution cycles where instructions are executed and stall cycles where instructions are not executed so that said instruction stream is executed asynchronously over plural instructions and any one of said CPUs in the multiple CPU system may be leading or lagging other of said CPUs, 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 in the multiple CPU system having a modulo N counter to count machine clock cycles corresponding to execution cycles but which is inhibited from counting during stall cycles; and c) an interrupt circuit coupled to each of said CPUs in the multiple CPU system and responsive to an external interrupt request occurring uncorrelated with which CPU may lead in executing said instruction stream, said interrupt circuit being correlated with said counters for applying an interrupt separately to each CPU in the multiple CPU system at a preselected count value of each of the counters, so that each CPU in the multiple CPU system is interrupted at a same execution cycle in said instruction stream but not necessarily at a same point in real time as the other CPUs. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A method of operating a multiple CPU computer system having a plurality of separately-clocked CPUs where any of the CPUs in the multiple CPU system may lead or lag other of the CPUs by plural instructions, comprising the steps of:
-
a) executing a same instruction stream concurrently on all of said CPUs in the multiple CPU system in accordance with execution clock cycles; b) performing stall clock cycles when instructions are not being executed; c) counting execution clock cycles for each of said CPUs in the multiple CPU system; d) inhibiting said counting during stall clock cycles for each of said CPUs in the multiple CPU system; and e) detecting an external interrupt request and applying an interrupt signal separately to each one of the CPUs in the multiple CPU system at a selected execution clock cycle count, said external interrupt request being uncorrelated with which CPU may be leading or lagging other CPUs in executing said instruction stream, said interrupt signal being applied to each CPU not necessarily at a same point in real time as an interrupt signal is applied to other of the CPUs. - View Dependent Claims (21, 22, 23)
-
Specification