IBM 3090 uses design for testability, error corrected memory systems using CRC, error correcting data path interfaces using USARTS, etc. At subsystem level also redundancy has to be built in.