In considering the design of ultra-reliable memory systems it has been proven that an implementation utilizing two SEC-DED memory modules performs better and requires less overhead than triple redundant memory with voting in regard to assured memory output in the presence of randomly occurring bit errors. The two SEC-DED modules are configured as primary and redundant with the capability for the redundant module to be utilized in the event of an uncorrectable double bit error in the primary module. Consideration of other memory subsystem reliability issues, such as decoder complexity and protection against other failure modes such as functional failure of entire memory devices could result in the ability to achieve better overall assurance using the TMR solution. [Vaidya96] 6.4.1.2 Error Detection and Correction in Arithmetic and Logic Structures [Peercy93] The complex nature of coding precludes its use in most computational operations. Simple arithmetic functions do permit the use of parity prediction through multistage adder circuits, and arithmetic codes such as AN and residue codes exist. AN is a non-separate code in which the added information is not distinct from the initial information, permitting fault detection in addition operations. The code in this case is performed by pre-multiplying the input variables by a check base, A, adding the resultant codewords residue mod A (modulo M), where the check base divides M, such that A(X Y) = AX +M AY. A non-zero residue #0 indicates error constitutes the detection of an error, as indicated in Figure 6-11. Other Figure 6-11. AN Code [Peercy93] residue codes which are separate in nature utilize the structure shown in Figure 6-12. The check symbol in separate residue codes is calculated from the input variables as C(X) = X C(X+Y) mod A, with the requirement on the check base, A, that it divides M = 2n-1. Inverse residue codes are indicates error capable of detecting multiple errors which are unidirectional in nature, and Figure 6-12. Separate Residue Code [Peercy93]