大位宽情况下的回滚式循环冗余校验算法
2021-04-25郭家松
罗 宇 郭家松
①(北京交通大学经济管理学院 北京 100044)
②(北京交通大学离退休干部处 北京 100044)
1 概述
循环冗余校验( Cyclic Redundancy Check,CRC)易于实现,且具有较优的误码检错能力和抗干扰性能被广泛应用于高速网络的差错控制中[1],以太网,ATM, PCIe, PON和OTN等数据通信协议中都使用了CRC算法。CRC还可以和其它编码技术结合,例如LDPC码与Polar码,形成新的编码技术[2]。CRC校验需要对每个报文的全部内容进行数据校验,运算频繁,为了不影响吞吐量和转发速度,一般都是采用硬件算法实现[3]。通常采用异或门逻辑算法[4],或者查表算法[5]。
随着数据通信带宽的不断提升,受器件工作频率的限制,器件内部的数据位宽也越来越宽,以以太网硬件为例,早期千兆以太网的时候,理论带宽只有1000 Mbps,如果主频是125 MHz的话,数据位宽只要8 bit就够了(1000/125=8)。而现在100 Gbit以太网已经普及,在这种情况下,即使工作频率提升到400 MHz,数据位宽也需要增加到256 bit,才可以达到百G以太网的理论带宽。
CRC算法也从串行实现变成了并行实现,CRC校验算法可以通过递推的方法从串行形式推导出并行形式[6]。
查表法CRC虽然可以比较简单地提高运算性能[7],但是需要占用存储单元,占用空间随着位宽加大指数上升,因此需要用逻辑门算法。
随着输入位宽的不断提升,CRC并行运算的要求也越来越高。对于并行逻辑门CRC的算法,在文献[8,9]中,给出了多种实现方案。并行数据位宽加大的情况下,也带来了逻辑门级数增多,延时加大,限制工作频率的问题,不过可以通过加流水线(pipeline)优化的方式[10]或分段运算-拼接[11]来解决。……
