Fault-tolerant computer with three independently clocked processors asynchronously executing identical code that are synchronized upon each voted access to two memory modules
First Claim
1. A fault-tolerant computer system, comprising:
- first, second and third CPUs, each executing a same given instruction stream;
first and second memory modules each storing the same data in response to execution by said CPUs of said instruction stream;
busses coupling each of the first, second and third CPUs individually to each of said first and second memory modules for said first, second and third CPUs to access said first and second memory modules separately or in duplicate, said first, second and third CPUs each executing said same given instruction stream, wherein each said CPU execution is clocked independently such that at least one earlier CPU among said CPUs asynchronously accesses said first and second memory modules after said earlier CPU executes plural consecutive instructions asynchronously and prior to a last CPU among said CPUs asynchronously accessing said first and second memory modules, and said earlier and last CPUs accessing to said memory modules being detected by said memory modules;
synchronizing means for synchronizing said first, second and third CPUs, said synchronizing means enabling said first and second memory modules to detect said asynchronous access by said earlier and last CPUs to said first and second memory modules, said synchronizing means stalling any CPUs for which the access occurs earlier to wait until the last one of said CPUs executes said access, and said synchronizing means thereafter allowing the access to occur asynchronously;
a first input/output bus coupled to said first memory module and a second input/output bus coupled to said second memory modules; and
a first input/output processor coupled to both said first and second input/output busses, and a second input/output processor coupled to both said first and second input/output busses.
0 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
26 Claims
-
1. A fault-tolerant computer system, comprising:
-
first, second and third CPUs, each executing a same given instruction stream; first and second memory modules each storing the same data in response to execution by said CPUs of said instruction stream; busses coupling each of the first, second and third CPUs individually to each of said first and second memory modules for said first, second and third CPUs to access said first and second memory modules separately or in duplicate, said first, second and third CPUs each executing said same given instruction stream, wherein each said CPU execution is clocked independently such that at least one earlier CPU among said CPUs asynchronously accesses said first and second memory modules after said earlier CPU executes plural consecutive instructions asynchronously and prior to a last CPU among said CPUs asynchronously accessing said first and second memory modules, and said earlier and last CPUs accessing to said memory modules being detected by said memory modules; synchronizing means for synchronizing said first, second and third CPUs, said synchronizing means enabling said first and second memory modules to detect said asynchronous access by said earlier and last CPUs to said first and second memory modules, said synchronizing means stalling any CPUs for which the access occurs earlier to wait until the last one of said CPUs executes said access, and said synchronizing means thereafter allowing the access to occur asynchronously; a first input/output bus coupled to said first memory module and a second input/output bus coupled to said second memory modules; and a first input/output processor coupled to both said first and second input/output busses, and a second input/output processor coupled to both said first and second input/output busses. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of operating a computer system having first, second and third CPUs and first and second memory modules, the method comprising the steps of:
-
asynchronously clocking on individual clocks each of the first, second and third CPUs; in parallel with the asynchronous clocking step, executing an instruction stream in each of the first, second and third CPUs, said instruction stream being the same in each of said first, second and third CPUs; in parallel with or after the instruction stream executing step, storing identical data in the first and second memory modules; performing asynchronous memory references by each of the first, second and third CPUs individually to each of said first and second memory modules after each of said CPUs has executed plural consecutive instructions asynchronously, wherein said step of performing of asynchronous memory references includes the step of voting said asynchronous memory references to both said first and second memory modules from said first, second and third CPUs such that a voted asynchronous memory reference is used to access asynchronously said first and second memory modules; and performing store or recall operations in said first and second memory modules in reponse to said memory references when said memory references have been received from all of said first, second and third CPUs. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer system comprising:
-
first, second and third CPUs executing a same given instruction stream, each of said CPUs having an address range, each of said CPUs having a separate memory access port; first and second memory means having identical address spaces within said address range of said CPUs for storing duplicative data at identical address spaces therein, each one of said first and second memory means having first, second and third input/output ports coupled to said memory access ports of said first, second and third CPUs, respectively; and voting means coupled to each one of said first, second and third ports to compare information appearing at the ports upon asynchronous access occurring after asynchronous execution of plural consecutive instructions by said CPUs and to allow such asynchronous accesses to be completed only in response to the same information appearing at at least two of the ports. - View Dependent Claims (17, 18, 19, 20, 21, 22)
-
-
23. A method of operating a computer system having first and second memory means, and having first, second and third CPUs, each having an address range, and including first, second and third memory access busses coupling the CPUs and the memory means, the method comprising the steps of:
-
executing a same given instruction stream in the first, second and third CPUs; in parallel with said instruction stream executing step, generating asynchronous memory accesses occurring after asynchronous execution of plural consecutive instructions by each of said first, second and third CPUs at separate ones of the first, second and third memory access busses; in parallel with or after said instruction stream executing step, performing asynchronous memory accesses to each one of said first and second memory means via said first, second and third memory busses; in parallel with or after said instruction stream executing step, storing duplicative data in identical address spaces in the first and second memory means within said address range of said CPUs; in parallel with or after said asynchronous memory access performing step, voting each one of said memory accesses in said first and second memory means when received from said first, second and third memory access busses, said voting including comparing information representing said memory accesses; and completing said asynchronous access in response to at least two of said first, second and third memory access busses presenting the same data. - View Dependent Claims (24, 25, 26)
-
Specification