Providing fault-tolerance by comparing addresses and data from redundant processors running in lock-step
Summary by NHIP
Lock-step processor fault tolerance
The method compares store operations from redundant processors running identical code in lockstep to detect errors. It combines identical operations into a single store for shared memory while routing invalidation messages to other processors but excluding the redundant group.
Claim Score by NHIP
Abstract
One embodiment of the present invention provides a system that facilitates fault-tolerance by using redundant processors. This system operates by receiving store operations from a plurality of redundant processors running the same code in lockstep. The system compares the store operations to determine if the store operations are identical, thereby indicating that the redundant processors are operating correctly. If the store operations are identical, the system combines the store operations into a combined store operation, and forwards the combined store operation to a system memory that is shared between the redundant processors. If the store operations are not identical, the system indicates an error condition. In a variation on this embodiment, the system similarly combines store operations.

Term
Term ended
Expired 21 July 2023, 3.2 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
19 claims: 3 independent, 16 dependent
- 1Broadest claimClaim Score 43, average(NHIP)A method for providing fault-tolerance by using redundant processors, comprising:receiving a plurality of store operations from a plurality of redundant processors running the same code in lockstep;comparing the plurality of store operations to determine if the plurality of store operations are identical, thereby indicating that the plurality of redundant processors are operating correctly;if the plurality of store operations are not identical, indicating an error condition;if the plurality of store operations are identical, combining the plurality of store operations into a combined store operation, and forwarding the combined store operation to a system memory that is shared between the plurality of redundant processors;receiving a plurality of invalidation messages from the plurality of redundant processors;wherein the plurality of invalidation messages indicate that a specific cache line should be invalidated in other caches in the computer system;combining the plurality of invalidation messages into a combined invalidation message;and communicating the combined invalidation message to the other processors in the computer system, but not to the plurality of redundant processors.
- 8An apparatus for providing fault-tolerance by using redundant processors, comprising:a plurality of redundant processors that are configured to run the same code in lockstep;a system memory that is shared between the plurality of redundant processors;a switch that couples the plurality of redundant processors to the system memory, wherein the switch is configured to receive a plurality of store operations from the plurality of redundant processors;a comparison mechanism within the switch that is configured to compare the plurality of store operations to determine if the plurality of store operations are identical, thereby indicating that the plurality of redundant processors are operating correctly;a forwarding mechanism coupled to the comparison mechanism, wherein if the plurality of store operations are identical, the forwarding mechanism is configured to, combine the plurality of store operations into a combined store operation, and to forward the combined store operation to the system memory;and an error handling mechanism that is configured to indicate an error condition if the plurality of store operations are not identical;wherein the switch is additionally configured to: receive a plurality of invalidation messages from the plurality of redundant processors, wherein the plurality of invalidation messages indicate that a specific cache line should be invalidated in other processors in a computer system containing the plurality of redundant processors;combine the plurality of invalidation messages into a combined invalidation message, and to communicate the combined invalidation message to the other processors in the computer system, but not to the plurality of redundant processors.
- 16An apparatus for providing fault-tolerance by using redundant processors, comprising:a plurality of redundant processors that are configured to run the same code in lockstep;a system memory that is shared between the plurality of redundant processors, wherein the system memory includes a lower-level cache memory;a switch that couples the plurality of redundant processors to the system memory, wherein the switch is configured to receive a plurality of store operations from the plurality of redundant processors;a comparison mechanism within the switch that is configured to compare the plurality of store operations to determine if the plurality of store operations are identical, thereby indicating that the plurality of redundant processors are operating correctly;a forwarding mechanism coupled to the comparison mechanism, wherein if the plurality of store operations are identical, the forwarding mechanism is configured to, combine the plurality of store operations into a combined store operation, and to forward the combined store operation to the system memory;and an error handling mechanism that is configured to indicate an error condition if the plurality of store operations are not identical;wherein the switch is additionally configured to, receive a plurality of invalidation messages from the plurality of redundant processors, wherein the plurality of invalidation messages indicate that a specific cache line should be invalidated in other processors in a computer system containing the plurality of redundant processors, combine the plurality of invalidation messages into a combined invalidation message, and to communicate the combined invalidation message to the other processors in the computer system, but not to the plurality of redundant processors.
Independent claims3
74 paragraphs in 5 sections, as filed
RELATED APPLICATIONS
00002This application hereby claims priority under 35 U.S.C. §119 to U.S. Provisional Patent Application No. 60/283,598, filed on Apr. 13, 2001, entitled “Providing Fault-Tolerance by Comparing Stores from Redundant Processors Running In Lock-Step”, by inventors Shailender Chaudhry and Marc Tremblay.
BACKGROUND
000031. Field of the Invention
00004The present invention relates to the design of multiprocessor systems. More specifically, the present invention relates to a method and an apparatus for facilitating fault-tolerance by comparing addresses and data from redundant processors running in lock-step.
000052. Related Art
00006As microprocessor systems become increasingly faster and more complex, larger numbers of circuit elements are being pushed to run at faster and faster clock rates. This increases the likelihood that transient errors will occur during program execution, and thereby reduces the reliability of microprocessor systems.
00007Error-correcting codes can be employed to correct transient errors that occur when data is stored into memory. However, such error-correcting codes cannot correct all types of errors, and furthermore, the associated circuitry to detect and correct errors is impractical to deploy in extremely time-critical computational circuitry within a microprocessor.
00008Transient errors can also be detected and/or corrected by replicating a computer system so that there exist two or more copies of the computer system concurrently executing the same code. This allows transient errors to be detected by periodically comparing results produced by these replicated computer systems.
00009Transient errors can be corrected in a replicated computer system by voting. If there are three or more replicated computer systems and an error is detected, the computer systems can vote to determine which result is correct. For example, in a three-computer system, if two of the three computers produce the same result, this result is presumed to be the correct answer if the other computer system produces a different result.
00010However, replicating entire computer systems can be expensive, especially if the entire system memory has to be replicated.
00011What is needed is a method and an apparatus for providing fault-tolerance without replicating entire computer systems.
00012Another problem with using replicated (redundant) computer systems to provide fault-tolerance is that existing cache-coherence mechanisms can interfere with the task of keeping all of the replicated processors in the same state.
00013For example, a common multiprocessor design includes a number of processors <b>151</b>-<b>154</b> with a number of level one (L1) caches, <b>161</b>-<b>164</b>, that share a single level two (L2) cache <b>180</b> and a memory <b>183</b> (see FIG. <b>1</b>). During operation, if a processor <b>151</b> accesses a data item that is not present in its local L1 cache <b>161</b>, the system attempts to retrieve the data item from L2 cache <b>180</b>. If the data item is not present in L2 cache <b>180</b>, the system first retrieves the data item from memory <b>183</b> into L2 cache <b>180</b>, and then from L2 cache <b>180</b> into L1 cache <b>161</b>.
00014Note that coherence problems can arise if a copy of the same data item exists in more than one L1 cache. In this case, modifications to a first version of a data item in L1 cache <b>161</b> may cause the first version to be different than a second version of the data item in L1 cache <b>162</b>.
00015In order to prevent such coherency problems, these computer systems typically provide a coherency protocol that operates across bus <b>170</b>. A coherency protocol typically ensures that if one copy of a data item is modified in L1 cache <b>161</b>, other copies of the same data item in L1 caches <b>162</b>-<b>164</b>, in L2 cache <b>180</b> and in memory <b>183</b> are updated or invalidated to reflect the modification. This is accomplished by broadcasting an invalidation message across bus <b>170</b>.
00016However, note that this type of coherency mechanism can cause replicated processors to have different states in their local L1 caches. For example, if a first replicated processor updates a data item in L1 cache, it may cause the same data item to be invalidated in the L1 cache of second replicated processor. In this case, the L1 cache of the first replicated processor ends up in a different state than the L1 cache of the second replicated processor.
00017What is needed is a method and an apparatus for providing fault-tolerance through replicated processors, without the side-effects caused by a cache-coherence mechanism.
SUMMARY
00018One embodiment of the present invention provides a system that facilitates fault-tolerance by using redundant processors. This system operates by receiving store operations from a plurality of redundant processors running the same code in lockstep. The system compares the store operations to determine if the store operations are identical, thereby indicating that the redundant processors are operating correctly. If the store operations are identical, the system combines the store operations into a combined store operation, and forwards the combined store operation to a system memory that is shared between the redundant processors. If the store operations are not identical, the system indicates an error condition.
00019In one embodiment of the present invention, handling the error condition involves setting an error flag in a data word for the combined store operation, and forwarding the combined store operation to the system memory.
00020In one embodiment of the present invention, in handling the error condition, the system determines whether a majority of store operations are identical. If so, the system combines the majority into a combined store operation, and forwards the combined store operation to the system memory. If no majority exists, the system sets an error flag in a data word for the combined store operation, and forwards the combined store operation to the system memory.
00021In one embodiment of the present invention, the system additionally receives load operations from the redundant processors. The system compares the load operations to determine if the load operations are identical, thereby indicating that the redundant processors are operating correctly. If the load operations are identical, the system combines the load operations into a combined load operation, and forwards the combined load operation to the system memory that is shared between the redundant processors. Next, the system receives a return data value from the system memory, and broadcasts the return data value to the redundant processors. If the load operations are not identical, the system indicates an error condition.
00022In a variation on this embodiment, the system receives the return data value at one of the redundant processors. This redundant processor examines an error flag in the return data value. If the error flag is set, the processor traps to an error handling routine.
00023In one embodiment of the present invention, system memory includes a lower-level cache memory.
00024In one embodiment of the present invention, the system additionally receives invalidation messages from the plurality of redundant processors. These invalidation messages indicate that a specific cache line should be invalidated. The system combines these invalidation messages into a combined invalidation message, and communicates the combined invalidation message to other processors in the computer system.
00025In one embodiment of the present invention, the system additionally receives an invalidation message indicating that a specific cache line should be invalidated. This invalidation message is generated as a result of actions of another processor that is not one of the redundant processors. The system broadcasts this invalidation message to the redundant processors.
BRIEF DESCRIPTION OF THE FIGURES
00026<figref idref="DRAWINGS">FIG. 1A</figref> illustrates a multiprocessor system.
00027<figref idref="DRAWINGS">FIG. 1B</figref> illustrates a multiprocessor system in accordance with an embodiment of the present invention.
00028<figref idref="DRAWINGS">FIG. 2</figref> illustrates in more detail the multiprocessor system illustrated in <figref idref="DRAWINGS">FIG. 1B</figref> in accordance with an embodiment of the present invention.
00029<figref idref="DRAWINGS">FIG. 3</figref> illustrates the structure of a switch in accordance with an embodiment of the present invention.
00030<figref idref="DRAWINGS">FIG. 4A</figref> illustrates a duplex configuration of a multiprocessor system in accordance with an embodiment of the present invention.
00031<figref idref="DRAWINGS">FIG. 4B</figref> illustrates a triple modular redundancy (TMR) configuration of a multiprocessor system in accordance with an embodiment of the present invention.
00032<figref idref="DRAWINGS">FIG. 5</figref> is a flow chart illustrating a store operation in accordance with an embodiment of the present invention.
00033<figref idref="DRAWINGS">FIG. 6</figref> is a flow chart illustrating a load operation in accordance with an embodiment of the present invention.
00034<figref idref="DRAWINGS">FIG. 7</figref> is a flow chart illustrating the process of sending an invalidation operation in accordance with an embodiment of the present invention.
00035<figref idref="DRAWINGS">FIG. 8</figref> is a flow chart illustrating the process of receiving an invalidation operation in accordance with an embodiment of the present invention.
00036<figref idref="DRAWINGS">FIG. 9</figref> is a flow chart illustrating the process of handling a load value with an error set in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION
00037The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
Multiprocessor Systems
00038<figref idref="DRAWINGS">FIG. 1B</figref> illustrates a multiprocessor system <b>100</b> in accordance with an embodiment of the present invention. Note that most of multiprocessor system <b>100</b> is located within a single semiconductor chip <b>101</b>. More specifically, semiconductor chip <b>101</b> includes a number of processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b>, which contain level one (L1) caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b>, respectively. Note that L1 caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b> may be separate instruction and data caches, or alternatively, unified instruction/data caches. L1 caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b> are coupled to level two (L2) cache <b>106</b>. L2 cache <b>106</b> is coupled to off-chip memory <b>102</b> through memory controller <b>104</b>.
00039In one embodiment of the present invention, L1 caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b> are write-through caches, which means that all updates to L1 caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b> are automatically propagated to L2 cache <b>106</b>. This simplifies the coherence protocol, because if processor <b>110</b> requires a data item that is present in L1 cache <b>112</b>, processor <b>110</b> can receive the data item from L2 cache <b>106</b> without having to wait for L1 cache <b>112</b> to source the data item. Moreover, no forwarding network is needed to allow L1 cache <b>112</b> to source the data. Note that in one embodiment of the present invention, L2 cache <b>106</b> is an “inclusive cache”, which means that all items in L1 caches <b>112</b>, <b>122</b>, <b>132</b> and <b>142</b> are included in L2 cache <b>106</b>.
00040<figref idref="DRAWINGS">FIG. 2</figref> illustrates in more detail the multiprocessor system illustrated in <figref idref="DRAWINGS">FIG. 1B</figref> in accordance with an embodiment of the present invention. In this embodiment, L2 cache <b>106</b> is implemented with four banks <b>202</b>-<b>205</b>, which can be accessed in parallel by processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b> through switches <b>215</b> and <b>216</b>. Switch <b>215</b> handles communications that feed from processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b> into L2 banks <b>202</b>-<b>205</b>, while switch <b>216</b> handles communications in the reverse direction from L2 banks <b>202</b>-<b>205</b> to processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b>.
00041Note that only two bits of the address are required to determine which of the four banks <b>202</b>-<b>205</b> a memory request is directed to. Also note that switch <b>215</b> additionally includes an I/O port <b>150</b> for receiving communications from I/O devices, and switch <b>216</b> includes an I/O port <b>152</b> for sending communications to I/O devices.
00042Note that by using this “banked” architecture, it is possible to concurrently connect each L1 cache to its own bank of L2 cache, thereby increasing the bandwidth of L2 cache <b>106</b>.
heading-00043Switch
00044<figref idref="DRAWINGS">FIG. 3</figref> illustrates the structure of a switch <b>215</b> in accordance with an embodiment of the present invention. Switch <b>215</b> includes a number of inputs <b>301</b>-<b>304</b>, which are coupled to processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b>, respectively. Switch <b>215</b> also includes a number of outputs <b>311</b>-<b>314</b>, which are coupled to L2 banks <b>202</b>-<b>205</b>, respectively. Note that each of these inputs <b>301</b>-<b>304</b> and outputs <b>311</b>-<b>314</b> represents multiple data lines.
00045Within switch <b>215</b> there are a number of multiplexers <b>321</b>-<b>324</b>. Each of these multiplexers <b>321</b>-<b>324</b> has an input queue for each of the inputs <b>301</b>-<b>304</b>. For example, multiplexer <b>321</b> is coupled to four queues, each one of which is coupled to one of the inputs <b>301</b>-<b>304</b>. Comparator <b>331</b> performs comparison operations between values stored in the input queues to facilitate fault tolerance. In the system configuration illustrated in <figref idref="DRAWINGS">FIG. 4A</figref>, comparator <b>331</b> compares pairs of inputs <b>301</b>-<b>302</b> and <b>303</b>-<b>304</b>. In another configuration illustrated in <figref idref="DRAWINGS">FIG. 4B</figref>, comparator circuit facilitates voting between three or more inputs <b>301</b>-<b>304</b> to determine if a majority of the inputs match.
00046The output of comparator <b>331</b> feeds into arbitration circuit <b>341</b>. Arbitration circuit <b>341</b> causes an entry from one of the input queues to be routed to output <b>311</b> through multiplexer <b>321</b>.
00047The outputs of multiplexers <b>321</b>-<b>324</b> pass into broadcast switch <b>350</b>. Broadcast switch <b>350</b> includes a number of pass gates <b>351</b>-<b>354</b>, which can selectively couple an output of a multiplexer to a neighboring output. For example, if pass gate <b>352</b> is transparent and the output of multiplexer <b>322</b> is disabled, the output of multiplexer <b>321</b> is broadcast onto outputs <b>311</b> and <b>312</b>. Note that in general there are many possible ways to implement broadcast switch <b>350</b>. The only requirement is that broadcast switch <b>350</b> should be able to broadcast the output of any one of multiplexers <b>321</b>-<b>324</b> to multiple outputs <b>311</b>-<b>314</b>.
00048Note that the structure of switch <b>216</b> is identical to the structure of switch <b>215</b> except that inputs <b>301</b>-<b>304</b> are coupled to L2 banks <b>202</b>-<b>205</b>, respectively, and the outputs <b>311</b>-<b>314</b> are coupled to processors <b>110</b>, <b>120</b>, <b>130</b> and <b>140</b>, respectively.
heading-00049Configurations
00050<figref idref="DRAWINGS">FIG. 4A</figref> illustrates a duplex configuration of a multiprocessor system in accordance with an embodiment of the present invention. In this configuration, processors <b>110</b> and <b>120</b> form a pair of redundant processors that execute the same code in lockstep. Store operations through switch <b>215</b> are compared to ensure that data values and store addresses from processors <b>110</b> and <b>120</b> agree. Load operations through switch <b>215</b> are similarly compared to ensure that the load addresses agree. If not, an error is indicated. Similarly, processors <b>130</b> and <b>140</b> form another pair of redundant processors, and switch <b>215</b> compares store operations from these processors.
00051The configuration illustrated in <figref idref="DRAWINGS">FIG. 4A</figref> is achieved by initializing processors <b>110</b> and <b>120</b> to run the same code in lockstep, and by initializing processors <b>130</b> and <b>140</b> to run the same code in lockstep. Within combining switch <b>215</b>, comparators <b>331</b>-<b>334</b> are configured so that inputs <b>301</b> and <b>302</b> are always compared against each other and inputs <b>303</b>-<b>304</b> are always compared against each other.
00052Within broadcast switch <b>216</b>, the output of comparators <b>332</b> and <b>334</b> are disabled and pass gates <b>352</b> and <b>354</b> are made transparent. This ensures that the output of multiplexer <b>321</b> is broadcast to outputs <b>311</b> and <b>312</b>, which are coupled to processors <b>110</b> and <b>120</b>. It also ensures that the output of multiplexer <b>323</b> is broadcast to outputs <b>313</b> and <b>314</b>, which are coupled to processors <b>130</b> and <b>140</b>.
00053<figref idref="DRAWINGS">FIG. 4B</figref> illustrates a triple modular redundancy (TMR) configuration of a multiprocessor system in accordance with an embodiment of the present invention. In this configuration, processors <b>110</b>, <b>120</b> and <b>130</b> execute the same code in lockstep, and processor <b>140</b> is a spare processor (which may also be executing the same code in lockstep to facilitate rapid replacement).
00054Store operations generated by processors <b>110</b>, <b>120</b> and <b>130</b> are compared at switch <b>215</b>. If they do not agree, the system performs a voting operation to determine if two of the three store operations agree. If so, the store operations that agree are taken to be the correct store operation, and the other store operation is presumed to be erroneous and is ignored.
00055The configuration illustrated in <figref idref="DRAWINGS">FIG. 4B</figref> is achieved by initializing processors <b>110</b>, <b>120</b> and <b>130</b> to run the same code in lockstep. Within combining switch <b>215</b>, comparators <b>331</b>-<b>334</b> are configured so that inputs <b>301</b>-<b>303</b> are always compared against each other, and so that the majority wins. Within broadcast switch <b>216</b>, the output of comparators <b>332</b>-<b>334</b> are disabled and pass gates <b>352</b> and <b>353</b> are made transparent. This ensures that the output of multiplexer <b>321</b> is broadcast to outputs <b>311</b>-<b>313</b>, which are coupled to processors <b>110</b>, <b>120</b> and <b>130</b>, respectively.
00056Note that one embodiment of the present invention can be selectively reconfigured between the configuration illustrated in FIG. <b>4</b>A and the configuration illustrated in <figref idref="DRAWINGS">FIG. 4B</figref> during a system boot operation.
heading-00057Store Operation
00058<figref idref="DRAWINGS">FIG. 5</figref> is a flow chart illustrating a store operation in accordance with an embodiment of the present invention. The system starts when switch <b>215</b> receives store operations from redundant processors running in lock step (step <b>502</b>). The system compares these store operations by using one of comparators <b>331</b>-<b>334</b> (step <b>504</b>). If these store operations are identical, the processors are presumably operating properly. In this case, the system combines the store operations into a single store operation (step <b>507</b>), and forwards the combined store operation to system memory (or L2 cache) (step <b>509</b>). Note that combining store operations involves passing only one instance of the store operation to switch <b>215</b> and ignoring the other instances.
00059If the store operations are not identical, the system sets an error flag in the data word for the store operation (step <b>508</b>), and forwards the store operation to system memory (step <b>510</b>). Note that if there is an error, it does not matter what the data value of the store operation is set to. The system only has to ensure that the error flag is set.
00060If the store operations are not identical and the system is configured for the voting option, such as in the TMR configuration illustrated in <figref idref="DRAWINGS">FIG. 4B</figref>, the system determines whether a majority of the store operations are identical (step <b>512</b>). If not, the system sets an error flag in the data word for the store operation (step <b>508</b>), and forwards the store operation to memory (step <b>510</b>).
00061If a majority if the store operations are identical, the system combines the majority into a combined store operation (by ignoring all but one instance of the identical store operations) (step <b>514</b>), and forwards the combined store operation to memory (step <b>509</b>).
heading-00062Load Operation
00063<figref idref="DRAWINGS">FIG. 6</figref> is a flow chart illustrating a load operation in accordance with an embodiment of the present invention. The system starts when switch <b>215</b> receives load operations from redundant processors running in lock step (step <b>602</b>). The system compares these load operations by using one of comparators <b>331</b>-<b>334</b> (step <b>604</b>). If these load operations are identical, the processors are presumably operating properly. In this case, the system combines the load operations into a single load operation (step <b>607</b>), and forwards the combined load operation to system memory (or L2 cache) (step <b>609</b>). Note that combining load operations involves passing only one instance of the load operation to switch <b>215</b> and ignoring the other instances.
00064If the load operations are not identical and the system is configured for the voting option, such as in the TMR configuration illustrated in <figref idref="DRAWINGS">FIG. 4B</figref>, the system determines whether a majority of the load operations are identical (step <b>612</b>). If not, the system sets generates an error condition (step <b>608</b>).
00065If a majority if the load operations are identical, the system combines the majority into a combined load operation (by ignoring all but one instance of the identical load operations) (step <b>614</b>), and forwards the combined load operation to memory (step <b>609</b>).
00066Next, switch <b>216</b> receives a return value for the load operation from system memory (step <b>618</b>). Switch <b>216</b> uses pass gates <b>351</b>-<b>354</b> to broadcast the return value to the redundant processors (step <b>620</b>).
00067Referring to <figref idref="DRAWINGS">FIG. 9</figref>, when a load operation is received at one of the redundant processors (step <b>902</b>), the processor checks the error flag (step <b>904</b>). If the error flag is set, the processor traps to an error handling routine (step <b>906</b>). Otherwise, the processor handles the load normally (step <b>908</b>).
heading-00068Invalidation Operations
00069Note that the system illustrated in <figref idref="DRAWINGS">FIG. 3</figref> applies cache coherency memory references after stores are combined within switch <b>215</b>, and up to the point that return values from loads are broadcast by switch <b>216</b>. Cache coherency does not apply prior to the stores being combined or after the return values are broadcast.
00070<figref idref="DRAWINGS">FIG. 7</figref> is a flow chart illustrating the process of sending an invalidation operation to support cache coherence in accordance with an embodiment of the present invention. In this case, switch <b>215</b> receives multiple invalidation messages from redundant processors executing the same code (step <b>702</b>). These invalidation messages are identical, and they indicate that a data item is updated in the local caches of the redundant processors. Switch <b>215</b> combines these invalidation messages into a combined invalidation message (step <b>704</b>), which can be accomplished by ignoring all but one of the invalidation messages. This combined invalidation message is then sent to other processors in the computer system, but not to any of the redundant processors that sent the invalidation message (step <b>706</b>).
00071For example, in <figref idref="DRAWINGS">FIG. 4A</figref>, if processors <b>110</b> and <b>120</b> concurrently generate invalidation messages, these invalidation messages are combined into a single invalidation message in switch <b>215</b>. This single invalidation message is then sent to processors <b>130</b> and <b>140</b> through switch <b>216</b>.
00072<figref idref="DRAWINGS">FIG. 8</figref> is a flow chart illustrating the process of receiving an invalidation operation in accordance with an embodiment of the present invention. In this case, switch <b>216</b> receives an invalidation message caused by a processor that is not part of the set of redundant processors (step <b>802</b>). Switch <b>216</b> then broadcasts the invalidation message to the set of redundant processors (step <b>804</b>).
00073For example, in <figref idref="DRAWINGS">FIG. 4A</figref>, when switch <b>216</b> receives a single invalidation message generated by redundant processors <b>110</b> and <b>120</b>. Switch <b>216</b> broadcasts this invalidation message to processors <b>130</b> and <b>140</b>. In this case, the same cache line is invalidated in both processor caches, thereby keeping the state within processors <b>130</b> and <b>140</b> identical.
00074The foregoing descriptions of embodiments of the present invention have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present invention to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention. The scope of the present invention is defined by the appended claims.
Contents5
10 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2005015661A1 | Cited by | United States of America | Pre-grant |
| US10331532B2 | Cited by | United States of America | Applicant |
| US8930752B2 | Cited by | United States of America | Applicant |
| US2010281239A1 | Cited by | United States of America | Pre-grant |
| US10992516B2 | Cited by | United States of America | Applicant |
| US7257734B2 | Cited by | United States of America | Search report |
| US2012210172A1 | Cited by | United States of America | Pre-grant |
| US2007011667A1 | Cited by | United States of America | Pre-grant |
| US7529807B1 | Cited by | United States of America | Search report |
| US7716377B2 | Cited by | United States of America | Applicant |
| US8635492B2 | Cited by | United States of America | Applicant |
| US2006271575A1 | Cited by | United States of America | Pre-grant |
| US2006271395A1 | Cited by | United States of America | Pre-grant |
| US8082425B2 | Cited by | United States of America | Applicant |
| US7912919B2 | Cited by | United States of America | Search report |
| US2010241909A1 | Cited by | United States of America | Pre-grant |
| US2006236168A1 | Cited by | United States of America | Pre-grant |
| US2006271931A1 | Cited by | United States of America | Pre-grant |
| US7467327B2 | Cited by | United States of America | Search report |
| US2006168425A1 | Cited by | United States of America | Pre-grant |
| US2009216934A1 | Cited by | United States of America | Pre-grant |
| US7328371B1 | Cited by | United States of America | Search report |
| US7392426B2 | Cited by | United States of America | Search report |
| US2005278567A1 | Cited by | United States of America | Pre-grant |
| US2006271542A1 | Cited by | United States of America | Pre-grant |
| US2006271930A1 | Cited by | United States of America | Pre-grant |
| US2002152419A1 | Cited by | United States of America | Pre-grant |
| US8671311B2 | Cited by | United States of America | Search report |
| US2008250185A1 | Cited by | United States of America | Pre-grant |
| US6971043B2 | Cited by | United States of America | Search report |
| US8140893B2 | Cited by | United States of America | Search report |
| US2004226997A1 | Cited by | United States of America | Pre-grant |
| US2007088762A1 | Cited by | United States of America | Pre-grant |
| US7797575B2 | Cited by | United States of America | Search report |
| US2001034824A1 | Cites | United States of America | Search report |
| US4456952A | Cites | United States of America | Applicant |
| US4868851A | Cites | United States of America | Search report |
| US5058053A | Cites | United States of America | Search report |
| US5226152A | Cites | United States of America | Search report |
| US5388242A | Cites | United States of America | Search report |
| US5623449A | Cites | United States of America | Search report |
| US5901281A | Cites | United States of America | Search report |
| US5903717A | Cites | United States of America | Applicant |
12 members in 7 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 28359801 | United States of America | P | |
| 28359801 | United States of America | P | |
| 6152202 | United States of America | A | |
| 60283598 | – | – | – |
| US20010283598P | – | – | – |
| US20020061522 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| US2002152420A1 | United States of America | A1 | |
| WO02084490A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2002252647A1 | Australia | A1 | |
| WO02084490A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1379951A2 | European Patent Office (EPO) | A2 | |
| KR20040063794A | Republic of Korea | A | |
| US6862693B2This record | United States of America | B2 | |
| JP2005512162A | Japan | A | |
| EP1379951B1 | European Patent Office (EPO) | B1 | |
| DE60212115D1 | Germany | D1 | |
| JP3972983B2 | Japan | B2 | |
| KR100842637B1 | Republic of Korea | B1 |
30 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Correspondence Address Change | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Issue Notification MailedAllowed | |
| Receipt into Pubs | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Receipt into Pubs | |
| Receipt into Pubs | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Workflow - File Sent to Contractor | |
| Mail Notice of AllowanceAllowed | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Date Forwarded to Examiner | |
| Response after Non-Final Action | |
| Workflow incoming amendment IFW | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| IFW TSS Processing by Tech Center Complete | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Application Dispatched from OIPE | |
| Application Is Now Complete | |
| IFW Scan & PACR Auto Security Review | |
| Initial Exam Team nn |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 06862693
- Publication, DOCDB
- 6862693
- Publication, EPODOC
- US6862693
- Application
- 10061522
- Application, DOCDB
- 6152202
- Application, EPODOC
- US20020061522
Titles
- English
- Providing fault-tolerance by comparing addresses and data from redundant processors running in lock-step
Patent term adjustment
- A delay
- +536 daysthe office missed an examination deadline
- Net adjustment
- 536 days
Classification
- CPC, 4
- G06F11/184
- G06F11/22
- G06F11/1641
- G06F11/1645
- IPC, 5
- G06F11 00
- G06F12 08
- G06F11 16
- G06F11 18
- G06F11 22
- USPC, 5
- 714011000
- 711120000
- 711122000
- 711141000
- 714012000