一种高速并行的ICRC计算方法与流程

文档序号:37691124发布日期:2024-04-18 21:21阅读:4606来源:国知局
一种高速并行的ICRC计算方法与流程

本发明涉及数据处理,尤其涉及一种高速并行的icrc计算方法。


背景技术:

1、在网络数据包处理的时候,经常使用crc来检验当前接收的数据包是否损坏,rdma网络中也不例外,特别是rocev2系统,rocev2是基于udp协议的rdma高性能网络,rocev2的数据包含有标准的udp协议包头,因此可以在传统的路由器上路由rocev2数据包,rocev2数据包打完udp包头之后就会打上ip包头,然后所有的ip数据段和ip包头计算出icrc放在数据的尾部作为ip数据的完整性校验。

2、对于传统的crc计算,其实并不复杂,比如1gbps的以太网中,一般数据位宽都是一个字节的整倍数,因此,只需要一个8比特位宽的数据就可以处理了,但是随着数据速率的提高,比如100gbps的网络中,因为硬件系统不能跑在很高的时钟之上,因此采取更大的数据位宽来进行数据处理,比如采取64字节来处理,但是,我们发送的数据都是以字节为单位的,因此最后一个时钟周期有数据可能不足64字节,有可能是1~63字节之间,在这些字节处理中,最后一个时钟的crc计算一共有64种情况需要处理,如果并行处理的话,一次处理64种情况需要消耗大量的硬件资源,如果串行处理的话,资源虽然较少,但是时延很大,最大达到63个时钟周期,这在低延时的rdma网络中是无法接受的。

3、目前计算icrc最后一拍的crc有两种方法:(1)直接计算法(2)补零回溯法。

4、直接计算法:是采取数据先进先出的方式依次进行icrc计算,到最后一拍数据的时候才会特别处理,传统的处理方式是最后接一个一字节的icrc计算模块,把数据依次送进该模块进行计算,最后得出32比特的结果,但是,这样处理的话,63字节的数据时延是63个时钟周期,如果资源足够,可以放置63个模块,分别处理1~63字节的数据,这样一个时钟周期可以出结果,但是,这样硬件资源要求巨大,在fpga中基本上是没办法实现的。

5、补零回溯法:这种方法是最后一拍的数据无效位上补零直接做icrc计算,然后在后面再进行回溯处理,消除补零的影响,不过,消除补零的时候还是会遇到是否串行和并行的处理方式,不可避免地涉及资源和效率的折中。


技术实现思路

1、本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本技术的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。

2、鉴于上述现有一种高速并行的icrc计算方法存在的问题,提出了本发明。

3、因此,本发明目的是提供一种高速并行的icrc计算方法,其适用于解决输出结果延时性高、占用fpga内部资源较大的问题。

4、为解决上述技术问题,本发明提供如下技术方案:一种高速并行的icrc计算方法,所述计算方法包括以下步骤:

5、s1:实时处理,多级流水结构保证icrc计算的实时性;

6、s2:优化结构,减少fpga硬件资源,保证硬件可实现;

7、s3:高速的icrc计算。

8、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在步骤所述s1中,实现多级流水架构包括位宽分别是m=8*2^n(n=2,…,n-1)的icrc计算模块、是判决模块和crc计算模块。

9、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在步骤所述s1中,当n=n-1时的icrc模块是一个纯净的crc计算模块,这个模块从开始到结束都参加crc运算。

10、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:所述并行计算crc的计算如下:

11、icrc生成多项式为crc[31:0]=g0+g1x^1+g2x^2+g4x^4+g5x^5+g7x^7+g8x^8+g10x^10+g11x^11+g12x^12+g16x^16+g22x^22+g23x^23+g26x^26+g32x^32;

12、其中g=[g31,g30,g29,...,g1,g0]t,输入数据序列x=[x0,x1,x2,...,xm-2,xm-1]t,那么第i次计算得到的结果为r[i]=[r31,r30,r29,...,r1,r0]it可以表示为r[i]=fir[0]+[fi-1g,…,fg,g]x。

13、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:其中r(0)是初始状态值,icrc计算的时候为全1,fi=fi-1[g|{i31,0}t],i31表示行列是31的单位阵,展开矩阵,可以得到32个lsfr的计算值,每个代表当前的计算结果rk,k=0,1,…,31。

14、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在步骤所述s2中,所述判决模块用于判断当前模块是否可以参数crc计算。

15、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:所述判决模块能够参与参数crc计算条件为:如果最后一拍剩余的数据位宽大于本模块规定的位宽,则当前模块参加计算,当前模块的移位寄存器初始值为上级模块的输出,当前数据位宽减去当前模块的数据位宽得到的值送到下一级。

16、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在步骤所述s2中,具体利用fpga自身结构特点,设计出基于4或者5输入查找表的线性移位寄存器实现结构的icrc计算,节省宝贵的fpga资源。

17、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在步骤所述s2中,利用fpga的结构优化线性移位寄存器,rocev2中的icrc计算公式如下:

18、crc[31:0]=g0+g1x^1+g2x^2+g4x^4+g5x^5+g7x^7+g8x^8+g10x^10+g11x^11+g12x^12+g16x^16+g22x^22+g23x^23+g26x^26+g32x^32,一共需要15个输入,使用5输入查找表的算法来进行fpga实现。

19、作为本发明所述一种高速并行的icrc计算方法的一种优选方案,其中:在rocev2中的icrc计算公式中:第一次计算结果为y0;第二次计算x^7+x^8+x^10+x^11+x^12,第二次计算结果为y1;第三次计算x^16+x^22+x^23+x^26+x^32,第三次计算结果为y2,那么最后的一个查找表是y0+y1+y2。

20、本发明的有益效果:

21、接从节省fpga资源和实时处理的角度出发,利用多级并行流水处理结构实现icrc计算的实时性,而计算时延也是有限的几个时钟周期,而且,这种结构具有固定的时延输出,这样结果的输出具有可预测性;

22、利用fpga自身结构特点,设计出基于4或者5输入查找表的线性移位寄存器实现结构的icrc计算,节省宝贵的fpga资源,而且,结合fpga内部寄存器和查找表相间的特点,优化的结果更符合fpga实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1