Fast parallel CRC algorithm and implementation on a configurable processor

We present a fast cyclic redundancy check (CRC) algorithm that performs CRC computation for any length of message in parallel. For a given message with any length, we first divide the message into blocks, each of which has a fixed size equal to the degree of the generator polynomial. Then we perform CRC computation among the blocks in parallel using Galois field multiplication and accumulation (GFMAC). Theoretically, our fast parallel CRC algorithm can achieve unlimited speedup over the bit-serial algorithm or byte-wise table lookup algorithm at the expense of adding enough GFMAC units. Our algorithm can perform CRC computation for any lengthy message with two to three clock cycles. In practice, we choose to use a configurable processor where a customized instruction is added to perform multiple pairs of GF multiplication and accumulation. For example, a 4-GFMAC implementation can compute a 32-bit CRC in two to three cycles for a 16-byte message. This level of performance is hundreds of times faster than a bit-serial CRC algorithm or tens of times faster than a byte-wise parallel CRC algorithm. The generator polynomial can be chosen to be software programmed or hard-coded. Our algorithm adds only a small number of logical gates to the processor core.

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

[2]  Michael Sprachmann Automatic generation of parallel CRC circuits , 2001, IEEE Design & Test of Computers.

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

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

[5]  H. Michael Ji An optimized processor for fast Reed-Solomon encoding and decoding , 2002, 2002 IEEE International Conference on Acoustics, Speech, and Signal Processing.

[6]  Elwyn R. Berlekamp,et al.  Algebraic coding theory , 1984, McGraw-Hill series in systems science.

[7]  Charles A. Zukowski,et al.  High-speed parallel CRC circuits in VLSI , 1992, IEEE Trans. Commun..

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

[9]  Chris Rowen,et al.  Hardware/Software Instruction Set Configurability , 2001 .

[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.