Error detection and error correction are integral parts of many high-reliability and high-performance computer and transmission/storage devices. In data storage systems, memory caches are used to improve system reliability. The cache is generally placed inside the controller between the host interface and the disk array. Any reliable cache memory design must include error correction code (ECC) functions to safeguard the loss of data. Similarly, ECC is an important design aspect of many communication applications, such as satellite receivers. The significance of ECC lies in performance and cost efficiency by correcting any error and avoiding repeated retransmission of data.