A fault-tolerant computer system having an application memory organized as
a plurality of cache lines, each cache line being identified by an address
in the memory. A FIFO buffer stores a plurality of such cache lines. The
system includes at least one CPU for executing instructions stored in the
application memory. A checkpoint controller defines a series of repeating
checkpoint cycles. The application memory and FIFO buffer are operated
under the control of a memory controller. The checkpoint controller also
has access to a plurality of registers in the CPU that define the state of
that CPU at a point in each checkpoint cycle that is controllable by the
controller. When the memory controller receives a cache line from the CPU
in response to a write command specifying an address A in the application
memory at which the cache line is to be stored, a copy of the cache line
as stored in the application memory at A is copied into the FIFO buffer
upon receiving the first write command specifying A after the start of the
current checkpoint cycle. The cache line received in the write command is
then used to overwrite the contents of address A in the application
memory. At a predetermined point in each checkpoint cycle, the checkpoint
controller causes the CPU to write back to the memory all dirty cache
lines; and to store its internal registers defining the state of the CPU
in the state memory. The checkpoint controller empties the contents of the
FIFO buffer at the end of each checkpoint cycle if no error has been
detected by the end of the checkpoint phase of the cycle. If an error is
detected, the contents of the FIFO buffer are read back into the
application memory, and the contents of the state memory are read back
into the CPU. The system is then restarted after completing any hardware
configuration needed for the restart.
Een fout-verdraagzaam computersysteem dat een toepassingsgeheugen heeft dat als meerderheid van geheim voorgeheugenlijnen wordt georganiseerd, elke geheim voorgeheugenlijn die door een adres in het geheugen wordt geïdentificeerd. Een buffer FIFO slaat een meerderheid van dergelijke geheim voorgeheugenlijnen op. Het systeem omvat minstens één cpu voor het uitvoeren van opgeslagen instructies in het toepassingsgeheugen. Een controlepostcontrolemechanisme bepaalt een reeks van het herhalen van controlepostcycli. Het toepassingsgeheugen en de buffer FIFO worden geopereerd onder de controle van een geheugencontrolemechanisme. Het controlepostcontrolemechanisme heeft ook toegang tot een meerderheid van registers in cpu die de staat van die cpu op een punt in elke controlepostcyclus bepalen die door het controlemechanisme controleerbaar is. Wanneer het geheugencontrolemechanisme een geheim voorgeheugenlijn van cpu in antwoord op a ontvangt schrijf bevel dat een adres A in het toepassingsgeheugen waarspecificeert bij de geheim voorgeheugenlijn moet worden opgeslagen, wordt een exemplaar van de geheim voorgeheugenlijn zoals die in het inschrijving geheugen bij A wordt opgeslagen in de buffer FIFO op het ontvangen van de eerste schrijft bevel gekopieerd dat A na het begin van de huidige controlepostcyclus specificeert. De geheim voorgeheugenlijn die in wordt ontvangen schrijft het bevel dan wordt gebruikt om de inhoud van adres A in het toepassingsgeheugen te beschrijven. Op een vooraf bepaald punt in elke controlepostcyclus, veroorzaakt het controlepostcontrolemechanisme cpu om terug naar het geheugen alle vuile geheim voorgeheugenlijnen te schrijven; en om zijn interne registers op te slaan die de staat van cpu in het staatsgeheugen bepalen. Het controlepostcontrolemechanisme maakt de inhoud van de buffer FIFO aan het eind van elke controlepostcyclus als leeg geen fout tegen het eind van de controlepostfase van de cyclus is ontdekt. Als een fout wordt ontdekt, wordt de inhoud van de buffer FIFO gelezen terug in het toepassingsgeheugen, en de inhoud van het staatsgeheugen wordt gelezen terug in cpu. Het systeem is dan opnieuw begonnen na de voltooiing van om het even welke hardwareconfiguratie nodig voor het nieuwe begin.