PROCESSOR INDEPENDENT ERROR CHECKING ARRANGEMENT

Abstract: A dual processor computer system with error checking that stops immediately when a discrepancy is detected between the two processors. The system includes a first processing system (20) for executing a series of instructions including input/output instructions. A second processor (30) executes the same instructions independently of and in synchronization with the first processing system. All significant processor address, data, and control signals are connected to all peripheral devices by a processor independent I/O bus (10). A comparison circuit (9) which detects discrepancies in the operation of the two lock step processing systems is connected between the processors and the processor independent I/O bus. The comparison circuit provides a signal that immediately stops operation of the processors when an error is detected. The I/O bus is independent of the processor type, clock rate, and peripherals chosen in the construction of the computing system. This independence allows the computing system to be upgraded with faster processors and newer peripherals, without having to redesign the computing platform and the error checking circuit.

Description: PROCESSOR INDEPENDENT ERROR CHECKING ARRANGEMENT 1. Technical Field This invention relates to computing systems, and more particularly, to fault detection in a processor system using dual processors and a comparison arrangement for error detection. 2. Background Art Computing integrity, or the ability to detect a incorrectly functioning computing system, is important in many areas of computer applications. This is especially true when a undetected failure in the computing platform could result in extensive loss of property or loss of life. Air traffic control, weapons guidance and control systems, and industrial process control systems are application examples in which errors in processing could have catastrophic effects. There have been many advances in fault-tolerant system software in recent years. These software systems attempt to make two or more computers appear to the end user as a single system which is more reliable (or "available") than a single system alone. However, these software systems rely on the underlying computer hardware behaving in a "fail stop" manner. That is, they assume that any fault in the computer hardware will be immediately detected, and that the system will immediately stop before delivering any erroneous data. Despite advances in software techniques for error detection, this "fail stop" behavior can still only be achieved with a custom computing platform with advanced hardware error detection included. Such hardware systems are usually difficult to design and expensive to produce. A common hardware technique for detecting faults occurring in a processor is to utilize an identical processor in "lock step" operation with the primary processor and to continuously compare all outputs and control signals of the identical pair. Lock step operation is generally provided by having a processor pair clocked by a common source, so that they will process identical instructions on the same clock cycles. If a disagreement occurs between the two processors, the processor system comprising the pair is immediately halted. In computing platforms based on the prior art, the error detection function is provided by a hardware comparison circuit, which is designed around the bus timing and electrical interfaces of the central processor units. Then, all input/output devices must be designed to interface to this custom, synchronized bus interface. The result of this design approach is that the resulting system is locked into a specific central processor unit, since the comparison logic and input/output systems are custom designed with electrical interfaces that are unique to a single processor. This makes system upgrades a extremely costly proposition, from both a financial and development time perspective. One example of a system that is extremely costly to upgrade is described in U.S. Patent No. 4,907,228. The system described in this patent does not use an input/output (I/O) bus structure, such as Peripheral Component Interconnect (PCI) bus, NuBus, ISA bus, TurboChannel, S-Bus, EISA bus, FutureBus, etc., which are independent of the central processing unit. Therefore, the system is unique to the processors used therein. Another example of such a system is described in U.S. Patent No. 5,136,595. The system described in this patent is designed around those microprocessors that operate in the functional redundancy mode and therefore is microprocessor dependent. The system does not provide any protection against memory errors as there is shown and described only one memory system and two microprocessors. Further the system does not make use of any standard, that is, processor independent, I/O bus structure. Therefore, it is desirable to have a comparison circuit or error checker logic that is not tied to any specific processor or chip set family. It is further desirable that the comparison circuit make use of an I/O bus that is independent of the processor. It is also desirable for the synchronized microprocessors to be compatible with the processor independent I/O bus. Thiε compatibility with a processor independent I/O bus allows the microprocessors to be upgraded without redesigning the error checker logic. In addition, the use of a standard processor independent I/O bus allows the resulting system to make use of commercial "off the shelf" input/output peripheral modules, resulting in a much lower total system cost. Disclosure of Invention An error detecting computing system that has a first processor, a second processor and a processor independent I/O bus. Each of the processors have a memory and an I/O interface to the processor independent I/O bus. The system also has a common clock and synchronizing interrupt controller which is connected to the processors to provide lock step operation thereof. The system further has an error checking subsystem which is connected to the first and second processors and to the processor independent I/O bus. The subsystem functions to determine any disagreement between the first and second processors on data transfer to the I/O buε. Upon such an occurrence the subsystem stops operation of the processors. Brief Description of the Drawing The only drawing figure shows a block diagram which illustrates the architecture of one embodiment of the present invention. Best Mode for Carrying Out the Invention Referring to the drawing figure, a very high integrity fault detecting processor architecture is illustrated including a primary processor 20 and a "checking" processor 30. The primary processor 20 is comprised of a CPU 1, a memory system 3 which consists of a random access memory (RAM) 3a, a read only/flash memory 3b, and a nonvolatile RAM 3c, address, data and control busses 15, and a bus interface 7. The checking processor 30 is comprised of a CPU 2, a memory system 4 which consists of RAM 4a, a read only/flash memory 4b, and a nonvolatile RAM 4c, address, data and control busses 16, and a bus interface 8. Both of these processors can be implemented using commodity microprocessors and support "chip sets" such as the 80X86 family of microprocessors manufactured by Intel and the Power PC/CHRP (common hardware reference platform) compliant system components and platforms. As such, either of these processors alone (with some input/output devices) would appear identical to many standard "desktop computing platforms" that are commercially available. The primary processor 20, by itself, contains only the same limited amount of error detection circuitry, such as parity checking on RAM memory 3a, that is common to desktop computing platforms. Because of this, it is considered a single, "non-trusted" CPU. That is, it cannot be relied upon not to deliver erroneous data when a system fault occurs, since its amount of error detection logic is limited. The checker processor 30 is added to the primary processor 20, in such a way as to produce synchronous, "lock step" execution of instructions. This is done by providing a common clock 6, a synchronizing interrupt controller 5, and connecting the bus interfaces 7 , 8 to run off of the common clock. The synchronizing interrupt controller 5 ensures that processors 20 and 30 receive interrupts simultaneously. The bus interfaces 7 , 8 can be any one of a number of popular microprocessor bus systems. The PCI bus is shown in the drawing figure, but the invention will work equally well with NuBus, ISA bus, TurboChannel, S-Bus, EISA bus, FutureBus, or any other I/O electrical interface. It should be noted that it is the addition of common clock 6 and synchronizing interrupt controller 5 that permits the use of standard bus interfaces, thereby allowing the present invention to make use of VLSI interface logic provided by the microprocesεor vendorε. The present invention also includes checker logic 9 and processor independent I/O bus 10. The checker logic 9 is added external to the processor pair 20, 30, and as shown in the figure is electrically connected at the bus interfaces 7, 8, not directly to the microprocessor system busses (15, 16) as is common in the prior art. As iε also shown in the figure, the checker logic 9 is electrically connected to the processor independent I/O bus 10. Further, by employing an industry standard input/output bus system 10, the resulting computing platform can make use of many standard microcomputer peripherals which are widely available at very low cost. Clock/calendar 11, DMA controller 12, RAM data buffer 13 which is part of a network controller 13a that is connected to a local area network 13b, and RAM data buffer 14 which iε part of a disk controller 14a that is connected to hard/floppy disk systems 14b are shown in the drawing figure as examples of such peripherals. The checker logic 9 is designed only to monitor the operation of the two processors. The primary processor's address, data, and control busses connect to the checker logic, as do the busses from the checker processor. Only the address, data, and control lines from the primary processor are connected directly to the processor independent I/O bus 10. The checker processor's lines are only connected to the checker logic and not directly to any other devices such as the εtandard peripherals 11-14. The functionε provided by the checker logic are: 1) to verify that the two processors agree on all addresses and data to be written to devices that are connected to the processor independent I/O bus 10; 2) to synchronize all data coming from the processor independent I/O bus, so that both processors are presented with identical data sets; and 3) to assert a "die on error" signal 17 on any disagreement between the address, data and control lines of the processors 20 and 30. The die on error signal 17 immediately stops operation of the processors when an error is detected. The combination of the two processors and the checker logic forms a "trusted CPU core", since the resulting system can now be relied upon to stop operation immediately when any discrepancy is detected. It should be noted that all input/output devices are all considered "non-trusted" resources, since there is no hardware error checking provided on these devices. However, recent advances in software-based error detection algorithms can provide an extremely high degree of fault detection for these devices. This iε possible, since the software itself is running on a "trusted" computing platform. It is to be understood that the description of the preferred embodiment(s) is (are) intended to be only illustrative, rather than exhaustive, of the present invention. Those of ordinary skill will be able to make certain additions, deletions, and/or modifications to the embodiment(s) of the disclosed subject matter without departing from the spirit of the invention or its scope, as defined by the appended claimε.

Claims: What is claimed iε: 1. An error detecting computing εyεtem compriεing: (a) a first processor (20) ; (b) a second procesεor (30) ; (c) a proceεsor independent input/output (I/O) bus (io) ; (d) each of said first and second processors (20, 30) comprising memory (3, 4) and an interface (7, 8) to said processor independent I/O bus (10) ; (e) a common clock (6) and synchronizing interrupt controller (5) connected to said first and second procesεors (20, 30) to provide lock step operation of said processors (20, 30) ; and (f) an error checker subsystem (9) connected to said first and second processors (20, 30) and to said proceεεor independent I/O bus (10) for determining the occurrence of any diεagreement between εaid first and second proceεsors (20, 30) on data tranεfer to εaid processor independent I/O bus (10) and stopping operation of said processors (20, 30) upon said occurrence. 2. The syεtem of Claim 1 wherein said first processor interface (7) is directly connected to said processor independent I/O bus (10) . 3. An error detecting computing system comprising: (a) a processor independent input/output (I/O) bus (10) ; (b) first and second processors (20, 30) each comprising an interface (7, 8) to said processor independent I/O bus (10) ; (c) a common clock (6) and synchronizing interrupt controller (5) connected to said first and second processors (20, 30) to provide lock step operation of said processors (20, 30) ; and (d) an error checker subsystem (9) connected to said first and second procesεorε (20, 30) and to εaid processor independent I/O bus (10) for determining the occurrence of any disagreement between said first and second procesεors (20, 30) on data transfer to said procesεor independent I/O buε (10) and εtopping operation of said procesεorε (20, 30) upon said occurrence. 4. The system of Claim 3 wherein said first processor interface (7) is connected directly to said procesεor independent I/O buε (10) . 5. A method for providing trusted computing for two procesεors comprising the steps of: (a) connecting a proceεεor independent input/output (I/O) buε (10) to one of εaid processors (20, 30) , each of said processors (20, 30) having an interface (7, 8) to said proceεεor independent I/O bus (10) ; (b) connecting a common clock (6) and synchronizing interrupt controller (5) to both of said processors (20, 30) to provide lock step operation of said processors (20, 30); and (c) connecting an error checker subsystem (9) to both of said processors (20, 30) and to said processor independent I/O bus (10) for determining the occurrence of any disagreement between said procesεors (20, 30) on data transfer to εaid proceεsor independent I/O bus (10) and stopping operation of said processors (20, 30) upon said occurrence. 6. A method for providing trusted computing for a computing system comprising two processors one of which is connected to a processor independent input/output (I/O) bus, a common clock and synchronizing interrupt controller connected to both of said processors to provide lock step operation of said processors, said method comprising the steps of: (a) connecting an error checker subsystem (9) to both of said processors (20, 30) and to said processor independent I/O bus (10) for determining the occurrence of any disagreement between said processors (20, 30) on data transfer to said processor independent I/O bus (10); and (b) stopping operation of said procesεorε (20, 30) upon εaid occurrence. 7. A method for providing trusted computing for a computing system comprising two processors which operate in lock step with each other, one of said processors connected to a procesεor independent input/output (I/O) bus, said method comprising the steps of: (a) determining the occurrence of any disagreement between said processors (20, 30) on data transfer to said procesεor independent I/O buε (10) ; and (b) stopping operation of said processors (20, 30) upon said occurrence. 8. The method of Claim 7 wherein εaid computing system further comprises an error checker subsystem (9) connected to both of said processors (20, 30) and to said proceεεor independent I/O bus (10) for determining said occurrence of any disagreement. 9. An error detecting computing syεtem compriεing: (a) a firεt proceεεor (20) ; (b) a εecond procesεor (30) ; (c) a processor independent input/output (I/O) bus (io) ; (d) said first and second procesεors (20, 30) operating in lock εtep with each other and one of said processors (20, 30) connected to said processor independent I/O bus (10) ; and (e) an error checker subsystem (9) connected to said first and second processors (20, 30) and to said processor independent I/O bus (10) for determining the occurrence of any disagreement between said firεt and εecond proceεεorε (20, 30) on data tranεfer to said procesεor independent I/O bus (10) and stopping operation of said procesεorε (20, 30) upon said occurrence. 10. The error detecting computing system of Claim 9 wherein said first and second processors (20, 30) each compriεe a memory (3, 4) and an interface (7, 8) to said processor independent I/O bus (10). 11. The error detecting computing system of Claim 10 wherein said firεt processor interface (7) is connected directly to said procesεor independent I/O buε (10) . 12. An error detecting computing εystem comprising: (a) a processor independent input/output (I/O) bus (10); (b) first and εecond processors (20, 30) each comprising an interface (7, 8) to said processor independent I/O buε (10) , εaid processors (20, 30) operating in lock step operation with each other; and (c) an error checker subsystem (9) connected to said first and second processors (20, 30) and to εaid processor independent I/O bus (10) for determining the occurrence of any disagreement between εaid firεt and εecond processorε (20, 30) on data transfer to εaid processor independent I/O bus (10) and stopping operation of said processors (20, 30) upon said occurrence. 13. The error detecting computing system of Claim 12 wherein said first processor interface (7) is directly connected to said processor independent I/O bus (10) .

Inventors: MOHAT WILLIAM D, MOHAT, WILLIAM, D.
Applicants: ELSAG INT NV, ELSAG INTERNATIONAL N.V.
Application year: 1996
Main classification: G06F11
IPC codes: G06F11