Novel Table Lookup-Based Algorithms for High-Performance CRC Generation

A framework for designing a family of novel fast cyclic redundancy code (CRC) generation algorithms is presented. Our algorithms can ideally read arbitrarily large amounts of data at a time, while optimizing their memory requirement to meet the constraints of specific computer architectures. In addition, our algorithms can be implemented in software using commodity processors instead of specialized parallel circuits. We use this framework to design two efficient algorithms that run in the popular Intel IA32 processor architecture. First, a "slicing-by-4" algorithm doubles the performance of existing software-based table-driven CRC implementations based on the Sarwate [12] algorithm while using a 4-Kbyte cache footprint. Second, a "slicing-by-8" algorithm triples the performance of existing software-based CRC implementations while using an 8-Kbyte cache footprint. Whereas well-known software-based CRC implementations compute the current CRC value from a bitstream reading 8 bits at a time, our algorithms read 32 and 64 bits at a time, respectively (this is an extended version of a paper that appeared at the 10th IEEE International Symposium on Computers and Communications (ISCC '05) in Cartagena, Spain, in June 2005). The slicing-by-8 source code is freely available for experimentation and can be found at http://sourceforge.net/projects/slicing-by-8.

[1]  Tenkasi V. Ramabadran,et al.  A tutorial on CRC computations , 1988, IEEE Micro.

[2]  Riccardo Sisto,et al.  Parallel CRC generation , 1990, IEEE Micro.

[3]  Georgia Griffiths,et al.  The tea-leaf reader algorithm: an efficient implementation of CRC-16 and CRC-32 , 1987, CACM.

[4]  Ross N. Williams A painless Guide to CRC Error Detection Algorithms , 1993 .

[5]  Aram Perez,et al.  Byte-Wise CRC Calculations , 1983, IEEE Micro.

[6]  Julian Satran,et al.  Internet Small Computer Systems Interface (iSCSI) , 2004, RFC.

[7]  Chung-Ho Chen,et al.  A Systematic Approach for Parallel CRC Computations , 2001, J. Inf. Sci. Eng..

[8]  D.C. Feldmeier,et al.  Fast software implementation of error detection codes , 1995, TNET.

[9]  Marcel Waldvogel,et al.  Fast incremental CRC updates for IP over ATM networks , 2001, 2001 IEEE Workshop on High Performance Switching and Routing (IEEE Cat. No.01TH8552).

[10]  Marc A. Kaplan,et al.  A new parallel algorithm for CRC generation , 2000, 2000 IEEE International Conference on Communications. ICC 2000. Global Convergence Through Communications. Conference Record.

[11]  Marcel Waldvogel,et al.  Fast and flexible CRC calculation , 2004 .

[12]  Martin Herrmann,et al.  Optimization of cyclic redundancy-check codes with 24 and 32 parity bits , 1993, IEEE Trans. Commun..

[13]  Dilip V. Sarwate Computation of cyclic redundancy checks via table look-up , 1988, CACM.