An architecture, method and apparatus for a data processing system having
memory compression and two common memories forming either a single
unified memory, or a dual memory system capable of continuous operation
in the presence of a hardware failure or redundant "duplex" computer
maintenance outage, without the cost of duplicating the memory devices. A
memory controller employs hardware memory compression to reduce the
memory requirement by half, which compensates for the doubling of the
memory needed for the redundant storage. The memory controller employs
error detection and correction code that is used to detect storage
subsystem failure during read accesses. Upon detection of a fault, the
hardware automatically reissues the read access to a separate memory bank
that is logically identical to the faulty bank. After a memory bank is
identified as faulty, the memory controller precludes further read access
to the bank, permitting replacement without interruption to the
application or operating system software operation.