计算大型CRC32的正确方法是什么?

pyt*_*nic 1 c crc32 sse x86-64

这里是介绍如何使用现代的x86-64处理器中内置的CRC32指令来计算最大1024个字节CRC32的文章.但是,我需要计算超过1024字节的CRC32.计算每个1024字节块的CRC32并最终求和它们是否是正确的方法,还是不正确?如果是这样,那么正确的方法是什么?

Pav*_*ath 5

引用你的文章提到的英特尔白皮书,

我们使用更快的方法将任意长度的缓冲区拆分为多个较小的固定大小的段,而不是使用传统的线性方法计算整个消息的CRC,并行计算这些段上的CRC,然后重新计算使用段的部分CRC的有效CRC.

也,

CRC的最终重组增加了开销,可以通过Nehalem微体系结构的查找表来实现 - 我们展示了如何使用尽可能少的表来实现这一点,同时在大小范围内提供出色的整体性能.Westmere微体系结构中的PCLMULQDQ指令允许在没有查找表的情况下有效地重组CRC.本文通过实际代码示例对各种方法进行了详细说明.

因此,您需要详细研究本文: 使用CRC32指令对iSCSI多项式进行快速CRC计算