Choosing a CRC Polynomial and Method for Fast CRC Computation
Cyclic Redundancy Check (CRC) codes are widely used for integrity checking of data in fields such as storage and networking. Fast and efficient methods of computing CRC on Intel® processors have been proposed for the fixed (degree-32) iSCSI polynomial, using the CRC32 instruction introduced in the Intel® Core™ i7 Processors. In addition, the PCLMULQDQ instruction can be used for fast CRC computation defined with any generic polynomial over the field GF(2) of degree smaller than 64. The performance of the PCLMULQDQ methods is independent of the polynomial chosen.
In this paper, we compare the iSCSI polynomial with other generic polynomials from a performance perspective and provide some guidelines on choosing the best polynomial for an application. We show that by using the iSCSI polynomial, we can achieve over 7X better CRC performance compared to any other polynomial.
Read the full Choosing a CRC Polynomial and Method for Fast CRC Computation White Paper.