一种校验码生成方法、处理器及电子设备与流程
未命名
10-18
阅读:249
评论:0
1.本技术涉及计算机领域,尤其涉及一种校验码生成方法、处理器及电子设备。
背景技术:
2.为了保证通信数据的正确性,通常在数据通信中会加入校验算法,其中crc(循环冗余校验)是最常见的校验算法。crc一般采用硬件方式或者软件方式实现,硬件方式实现方法简单、执行效率高,但是硬件方式集成后只能实现一种crc算法,也只能接收一种数据长度的校验数据,功能比较单一;软件方式能够实现不同的crc算法,但是执行步骤较多,执行效率较低。
技术实现要素:
3.本技术提供一种校验码生成方法、处理器及电子设备,能够从硬件的角度实现对不同数据长度的校验数据的处理以及能够实现不同的校验算法类型。
4.第一方面,本技术实施例提供一种校验码生成方法,应用于通过硬编码方式实现的计算电路,该计算电路集成于处理器中,该方法可以由处理器或处理器的模块执行,本技术对该方法的执行主体不做限定。该方法包括:获取校验码计算指令;校验码计算指令包括校验码算法指示信息;校验码计算指令属于处理器cpu指令集中的指令;根据校验码算法指示信息,确定校验码多项式;通过计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的;根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码。
5.上述方案,一方面,根据校验码算法指示信息,确定校验码多项式,因为不同的校验码算法对应的校验码多项式不同,且上述方法通过硬编码的方式集成于计算电路中,因而能够从硬件的角度实现不同的校验算法类型,且通过硬件的实现,能够提高校验码确定的速率;另一方面,通过计算电路中的各计算分支,得到每个计算分支输出的校验码,也即通过一次计算电路的计算能够得到多个计算分支的校验码,提高了校验码确定的速率;再一方面,根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码,由于待校验数据的长度不同,每种数据长度对应一个计算分支的校验码,因而能够实现对不同数据长度的校验数据的处理。
6.一种可能的实现方法中,所述通过所述计算电路中的各计算分支,得到每个计算分支输出的校验码之前,还包括:根据所述校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,并确定所述多组校验数据中的每组校验数据对应的待校验数据;所述根据所述校验码算法指示信息,从所述各计算分支输出的校验码中确定所述待校验数据对应的校验码,包括:将与所述数据长度对应的计算分支输出的校验码中确定所述待校验数据对应的校验码。
7.上述方案,将原始数据划分为多组校验数据,对每组校验数据依序进行处理,得到的校验码包含原始数据的信息,提高了校验码的复杂度和可靠性;根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码,由于待校验数据的长度不同,每种数据长度对应一个计算分支的校验码,因而能够实现对不同数据长度的校验数据的处理。
8.一种可能的实现方法中,所述输入校验码为初始校验码或上一组待校验数据对应的校验码;所述原始数据的校验码为所述多组校验数据中的最后一组校验数据对应的校验码。
9.上述方案,能够提高校验码的复杂度,且使用上一组校验数据对应的校验码作为输入校验码,能够使当前组的校验码包含上一组校验数据的信息,进一步地,能够使最终的校验码包含原始数据的信息,提高了校验码的复杂度和可靠性。
10.一种可能的实现方法中,针对任一组校验数据,若所述校验数据的数据长度小于计算分支的数量,则将所述校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量。
11.上述方案,将数据对齐,能够减少硬件电路设计的复杂度,同时提高数据处理效率。
12.一种可能的实现方法中,将第i-1计算分支输出的校验码右移一位,并将最高位补齐,确定更新校验码;若第i-1计算分支输出的校验码的第0位的数值为1,则将更新校验码与校验码多项式异或后,确定第i计算分支输出的校验码;若第i-1计算分支输出的校验码的第0位的数值为0,则将更新校验码确定为第i计算分支输出的校验码。
13.上述方案,能够实现准确确定校验码。
14.一种可能的实现方法中,所述校验码计算指令还包括校验码标识、待校验数据指示信息或校验码存储指示信息中的一种或多种;所述校验码标识用于指示cpu通过计算电路生成校验码;所述待校验数据指示信息用于指示每组校验数据的存储位置;所述校验码存储指示信息用于指示上一组校验数据对应的校验码的存储位置和/或待校验数据对应的校验码的存储位置。
15.上述方案,校验码标识能够标识校验码计算指令的功能类型,待校验数据指示信息能够获取待校验数据,校验码存储指示信息指示了校验码的存储信息,通过上述信息,能够实现准确、快速确定校验码的信息。
16.一种可能的实现方法中,从预先存储有不同数据长度及不同校验码算法对应的校验码多项式,获取与所述校验码算法指示信息对应的校验码多项式。
17.上述方案,预先存储有不同校验码算法对应的校验码多项式,能够实现准确、快速确定校验码的信息。
18.第二方面,本技术实施例提供一种处理器,处理器中集成有通过硬编码方式实现的计算电路;处理器计算电路包括计算单元和输出单元;处理器,用于获取校验码计算指令;校验码计算指令包括校验码算法指示信息;校验码计算指令属于处理器cpu指令集中的指令;根据校验码算法指示信息,确定校验码多项式;计算单元,用于通过计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校
验码是根据输入校验码和待校验数据生成的;输出单元,用于根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码。
19.一种可能的实现方法中,所述计算单元还包括掩码单元;所述处理器,还用根据所述校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据;所述掩码单元,用于将每组校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量;所述输出单元,具体用于将与所述数据长度对应的计算分支输出的校验码中确定所述待校验数据对应的校验码。
20.一种可能的实现方法中,所述输入校验码为初始校验码或上一组待校验数据对应的校验码;所述原始数据的校验码为所述多组校验数据中的最后一组校验数据对应的校验码。
21.一种可能的实现方法中,所述掩码单元,用于针对任一组校验数据,若所述校验数据的数据长度小于计算分支的数量,则将所述校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量。
22.一种可能的实现方法中,所述计算单元,用于将第i-1计算分支输出的校验码右移一位,并将最高位补齐,确定更新校验码;若第i-1计算分支输出的校验码的第0位的数值为1,则将更新校验码与校验码多项式异或后,确定第i计算分支输出的校验码;若第i-1计算分支输出的校验码的第0位的数值为0,则将更新校验码确定为第i计算分支输出的校验码。
23.一种可能的实现方法中,所述校验码计算指令还包括校验码标识、待校验数据指示信息或校验码存储指示信息中的一种或多种;所述校验码标识用于指示cpu通过计算电路生成校验码;所述待校验数据指示信息用于指示每组校验数据的存储位置;所述校验码存储指示信息用于指示上一组校验数据对应的校验码的存储位置和/或待校验数据对应的校验码的存储位置。
24.一种可能的实现方法中,所述处理器,用于从预先存储有不同数据长度及不同校验码算法对应的校验码多项式,获取与所述校验码算法指示信息对应的校验码多项式。
25.第三方面,本技术实施例提供一种电子设备,包括上述第二方面的任意处理器。
附图说明
26.图1为本技术实施例提供的一个完整的数据的结构示意图;图2为本技术实施例提供的一种校验码生成方法的流程示意图;图3为本技术实施例提供的一种校验码计算指令的格式示意图;图4为本技术实施例提供的一种校验码生成方法的流程示意图;图5为本技术实施例提供的一种处理器的结构示意图;图6为本技术实施例提供的一种校验码生成方法的流程示意图;图7为本技术实施例提供的一种处理器的结构示意图。
具体实施方式
27.为了保证通信数据的正确性,一个完整的数据帧如图1所示,通常由帧头、原始数据、校验码和帧尾组成,校验码是为了保证数据在传输过程中的完整性,采用一种指定的算法对原始数据进行计算,得出的一个校验值。接收方接收到数据时,采用同样的校验算法对
原始数据进行计算,如果计算结果和接收到的校验值一致,说明数据校验正确,这一帧数据可以使用,如果不一致,说明传输过程中出现了差错,这一帧数据丢弃,请求重发。
28.循环冗余校验(cyclic redundancy check, crc)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。crc校验计算速度快,检错能力强,易于用编码器等硬件电路实现。但是集成后的硬件电路只能实现一种crc算法,功能比较单一,且集成后的硬件电路只能处理一种数据长度的校验数据,比如,如果集成后的硬件电路用于处理8比特的数据,那么只能将原始数据按照8比特进行划分,确定多组校验数据,并不能将原始数据按照16比特或者32比特进行划分;如果集成后的硬件电路用于处理16比特的数据,那么只能将原始数据按照16比特进行划分,确定多组校验数据,不能将原始数据按照8比特或者32比特进行划分。
29.当然,也可以通过软件方式实现crc算法,软件的方式可以实现不同类型的crc算法,能够对不同的数据长度进行处理,但是软件方式的执行步骤较多,耗时较长,执行效率较低,一个完整的数据帧的确定时间较长,进一步地,会影响整个网络通讯的效率。
30.图2为本技术实施例提供的一种校验码生成方法的流程示意图,应用于通过硬编码方式实现的计算电路,该计算电路集成于处理器中,该方法可以由处理器或处理器的模块执行,本技术对该方法的执行主体不做限定。
31.该方法包括以下步骤:步骤201,获取校验码计算指令。
32.其中,校验码计算指令包括校验码算法指示信息;校验码计算指令属于处理器cpu指令集中的指令。
33.一种可能的实现方法中,在中央处理器(central processing unit,cpu)指令集中新增指令,该指令称为校验码计算指令。校验码计算指令包括校验码算法指示信息,校验码算法指示信息用于指示检验码算法的类型和数据长度。本技术对检验码算法的类型和数据长度不做限定。示例性地,校验码算法指示信息为0001,则表示采用crc32b算法确定校验码,其中,crc32b表示采用0xedb88320校验码多项式进行crc计算,且处理的数据长度为1字节(byte),也即8比特。
34.步骤202,根据校验码算法指示信息,确定校验码多项式。
35.一种可能的实现方法中,根据校验码算法指示信息中的检验码算法的类型确定校验码多项式。不同的检验码算法的类型对应不同的校验码多项式。
36.一种可能的实现方法中,相同检验码算法的类型,不同数据长度对应相同的校验码多项式。
37.一种可能的实现方法中,从预先存储有不同数据长度及不同校验码算法对应的校验码多项式,获取与校验码算法指示信息对应的校验码多项式,也就是说cpu预先存储有不同校验码算法对应的校验码多项式。该方案,能够实现准确、快速确定校验码的信息。
38.步骤203,通过计算电路中的各计算分支,得到每个计算分支输出的校验码。
39.其中,通过对第i-1计算分支输出的校验码和校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的。
40.一种可能的实现方法中,根据校验码算法指示信息中的检验码算法的类型确定计算电路中的各计算分支,比如采用crc32算法,则计算电路中共有32个计算分支,每个计算分支均会输出一个校验码。
41.一种可能的实现方法中,第0计算分支输出的校验码是根据输入校验码和待校验数据异或得到的,当然也可以为其他方式,本技术对此不做限定。其中,输入校验码为初始校验码或上一组校验数据对应的校验码。 上一组校验数据指的是将原始数据按照数据长度分为多组,每组校验数据均进行crc计算,确定每组输出的校验码,当前组的输入校验码可以为上一组校验数据对应的校验码。该方案,能够提高校验码的复杂度,且使用上一组校验数据对应的校验码作为输入校验码,能够使当前组的校验码包含上一组校验数据的信息,进一步地,能够使最终的校验码包含原始数据的信息,提高了校验码的复杂度和可靠性。
42.一种可能的实现方法中,第i计算分支输出的校验码是根据第i-1计算分支输出的校验码和校验码多项式异或得到的,当然也可以为其他方式,本技术对此不做限定。
43.步骤204,根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码。
44.一种可能的实现方法中,根据校验码算法指示信息中的数据长度,将与数据长度对应的计算分支输出的校验码中确定待校验数据对应的校验码,也即每种数据长度对应一个计算分支的校验码,比如采用crc32算法,则计算电路中共有32个计算分支,如果处理的数据长度为8比特,则将第8个计算分支的输出校验码作为待校验数据对应的校验码;如果处理的数据长度为16比特,则将第16个计算分支的输出校验码作为待校验数据对应的校验码;如果处理的数据长度为32比特,则将第32个计算分支的输出校验码作为待校验数据对应的校验码。因此,本技术不仅能够实现对不同数据长度的校验数据进行处理,而且一次计算得到32个校验码,提高了校验码执行效率。
45.上述方案,一方面,根据校验码算法指示信息,确定校验码多项式,因为不同的校验码算法对应的校验码多项式不同,且上述方法通过硬编码的方式集成于计算电路中,因而能够从硬件的角度实现不同的校验算法类型,且通过硬件的实现,能够提高校验码确定的速率;另一方面,通过计算电路中的各计算分支,得到每个计算分支输出的校验码,也即通过一次计算电路的计算能够得到多个计算分支的校验码,提高了校验码确定的速率;再一方面,根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码,由于待校验数据的长度不同,每种数据长度对应一个计算分支的校验码,因而能够实现对不同数据长度的校验数据的处理。
46.一种可能的实现方法中,通过计算电路中的各计算分支,得到每个计算分支输出的校验码之前,还包括:根据校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,并确定多组校验数据中的每组校验数据对应的待校验数据。将与数据长度对应的计算分支输出的校验码中确定待校验数据对应的校验码。该方案,将原始数据划分为多组校验数据,对每组校验数据依序进行处理,得到的校验码包含原始数据的信息,提高了校验码的复杂度和可靠性。
47.一种可能的实现方法中,根据校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据。其中,数据长度为8比特、16比特或32比特中的一种或多种,本技术对数
据长度不做限定。比如,原始数据为64比特,若校验码算法指示信息中指示数据长度为8比特,那么将原始数据划分为8组,每组校验数据的长度为8比特;若校验码算法指示信息中指示数据长度为16比特,那么将原始数据划分为4组,每组校验数据的长度为16比特;若校验码算法指示信息中指示数据长度为32比特,那么将原始数据划分为2组,每组校验数据的长度为32比特。该方案,根据校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,能够实现对不同数据长度的校验数据的处理。
48.一种可能的实现方法中,检验码算法的类型可以如表1所示,但是不限于表1中所列的算法类型,本技术对检验码算法的类型不做限定。其中,宽度即生成的crc校验码的位宽,如crc-8,生成的crc为8位。校验码多项式即十六进制多项式,省略最高位1,如crc-8中的多项式公式为 x8 + x2 + x + 1,对应的二进制为1 0000 0111,省略最高位1,转换为十六进制为0x07。当然,除了宽度和校验码多项式外,针对某一crc算法,还包括init表示crc初始值;refin,表示在进行crc计算之前,原始数据是否翻转,如原始数据:0x34 = 0011 0100,如果refin为true,进行翻转之后为0010 1100 = 0x2c;trfout表示crc运算完成之后,得到的crc值是否进行翻转,如计算得到的crc值为0x97 = 1001 0111,如果refout为true,进行翻转之后为11101001 = 0xe9。xorout表示将crc计算结果与异或参数进行异或运算后得到的值为最终的crc值,如计算得到的crc值为0x97 = 1001 0111,异或参数为0x00,异或结果为1001 0111=0x97。
49.表1
50.一种可能的实现方法中,校验码计算指令的格式如图3所示,校验码计算指令除了包括校验码算法指示信息,还可以包括校验码标识、待校验数据指示信息或校验码存储指示信息中的一种或多种。其中,校验码标识用于指示cpu通过计算电路生成校验码;示例性地,校验码计算指令是32比特的数据,其中,31至26位是校验码标识,比如校验码标识为001000,则认为该校验码计算指令用于crc计算,如果是其它数值,则认为是cpu指令集中的其它指令;25至21位为校验码存储指示信息,用于指示上一组校验数据对应的校验码的存储位置和/或待校验数据对应的校验码的存储位置,比如校验码存储指示信息为某一寄存器的地址,该寄存器为之前crc计算的累计结果计算器,同时是本次crc计算结果的目的寄存器;20至16位为待校验数据指示信息,待校验数据指示信息用于指示每组校验数据的存储位置,比如待校验数据指示信息为另一寄存器的地址,该寄存器用于存储本次进行crc计算的校验数据;15至8位是校验码算法指示信息;7至0位暂未使用。本技术对校验码计算指令包含的内容不做限定,对验码计算指令中各内容在校验码计算指令中的位置不做限定,
图3仅为本技术的一种实现方式。该方案,校验码标识能够标识校验码计算指令的功能类型,待校验数据指示信息能够获取待校验数据,校验码存储指示信息指示了校验码的存储信息,通过上述信息,能够实现准确、快速确定校验码的信息。
51.一种可能的实现方法中,校验码计算指令中的校验码算法指示信息用于指示检验码算法的类型和数据长度。示例性地,校验码算法指示信息为0001,则表示采用crc32b算法确定校验码,其中,crc32表示采用crc32算法,b表示字节(byte),crc32b表示采用0xedb88320校验码多项式进行crc计算,且处理的数据长度为1字节,也即8比特;校验码算法指示信息为0010,则表示采用crc32h算法确定校验码,其中,crc32表示采用crc32算法,h表示半字(half word),crc32h表示采用0xedb88320校验码多项式进行crc计算,且处理的数据长度为2字节,也即16比特;校验码算法指示信息为0011,则表示采用crc32w算法确定校验码,其中,crc32表示采用crc32算法,w表示字(word),crc32w表示采用0xedb88320校验码多项式进行crc计算,且处理的数据长度为2字节,也即32比特。从上述例子可以看到,虽然数据长度不同,但是检验码算法的类型相同,则对应相同的校验码多项式。
52.一种可能的实现方法中,上述步骤203具体实现过程如图4所示,该过程包括以下步骤:步骤401,确定待校验数据。
53.一种可能的实现方法中,根据校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,依次对每组校验数据进行crc计算,其中,待校验数据是多组校验数据中的任一组。
54.一种可能的实现方法中,针对任一组校验数据,若校验数据的数据长度小于计算分支的数量,则将校验数据的高位补0,得到校验数据对应的待校验数据,其中,待校验数据的数据长度等于计算分支的数量。该方案,将数据对齐,能够减少硬件电路设计的复杂度,同时提高数据处理效率。
55.一种可能的实现方法中,对任一组校验数据进行数据补充或数据截取后,确定待校验数据。示例性地,校验码算法指示信息为0001,则表示采用crc32b算法进行计算,也即将原始数据按照8比特进行划分,每组校验数据为8比特,由于校验码的位数为32,因此将每组校验数据补齐至32位后,作为待校验数据。其中,补齐方式为将每组校验数据的其它24位进行补0操作;校验码算法指示信息为0010,则表示采用crc32h算法进行计算,也即将原始数据按照16比特进行划分,每组校验数据为16比特,由于校验码的位数为32,因此将每组校验数据补齐至32位后,作为待校验数据。其中,补齐方式为将每组校验数据的其它16位进行补0操作;校验码算法指示信息为0011,则表示采用crc32w算法进行计算,也即将原始数据按照32比特进行划分,每组校验数据为32比特,由于校验码的位数为32,因此无需补齐,直接将任一组校验数据作为待校验数据。
56.一种可能的实现方法中,待校验数据可以通过如下公式(1)得到:data_mask = dsize==010? data[31:0]:dsize==001?{16’h0,data[15:0]}:dsize==000?{24’h0,data[7:0]}:32’h0
ꢀ……
(1)其中,data_mask指的是待校验数据,dsize表示数据长度,如果是010,则从待校验
数据指示信息中也即数据寄存器中获取32位数据(即data[31:0])作为待校验数据;如果是001,则从数据寄存器中获取16位数据(即data[15:0]),并将其它16位进行补0操作,16’h0表示将高位的16位补0;如果是000,则从数据寄存器中获取8位数据(即data[7:0]),并将其它24位进行补0操作,24’h0表示将高位的24位补0;如果不是010或001或000,则data_mask为32位全0数据,即32’h0。
[0057]
步骤402,确定第0计算分支输出的校验码。
[0058]
一种可能的实现方法中,第0计算分支输出的校验码是根据输入校验码和待校验数据异或得到的,当然也可以为其他方式,本技术对此不做限定。其中,输入校验码为初始校验码或上一组校验数据对应的校验码。 初始校验码指的是在进行crc计算之前的校验码初始值;上一组校验数据指的是将原始数据按照数据长度分为多组,每组校验数据均进行crc计算,确定每组输出的校验码,当前组的输入校验码可以为上一组校验数据对应的校验码。
[0059]
一种可能的实现方法中,确定第0计算分支输出的校验码,如下公式(2)所示。
[0060]
crc0=crcin^data_mask
ꢀ……ꢀ
(2)其中,crc0为第0计算分支输出的校验码,crcin为输入校验码,data_mask指的是待校验数据,^为异或函数。
[0061]
步骤403,确定第i计算分支输出的校验码。
[0062]
一种可能的实现方法中,第i计算分支输出的校验码是根据第i-1计算分支输出的校验码和校验码多项式异或得到的,当然也可以为其他方式,本技术对此不做限定。具体地,将第i-1计算分支输出的校验码右移一位,并将最高位补齐,确定更新校验码;若第i-1计算分支输出的校验码的第0位的数值为1,则将更新校验码与校验码多项式异或后,确定第i计算分支输出的校验码;若第i-1计算分支输出的校验码的第0位的数值为0,则将更新校验码确定为第i计算分支输出的校验码。
[0063]
一种可能的实现方法中,若校验码为32位,则确定第i计算分支输出的校验码,如下公式(3)所示。
[0064]
crci={1’b0,crci-1[31:1]}^{ crci-1[0]?poly:32’h0}
……ꢀ
(3)其中,crci表示i计算分支输出的校验码,crci-1表示i-1计算分支输出的校验码,{1’b0,crci-1[31:1]}为更新校验码,即将第i-1计算分支输出的校验码右移一位,并将最高位补齐,crci-1[31:1]取第i-1计算分支输出的校验码的1-31位,1’b0表示1比特的二进制0,也即将最高位补1比特的0;crci-1[0]表示第i-1计算分支输出的校验码的第0位的数值; crci-1[0]?poly:32’h0表示选择函数,若crci-1[0]的值为1,则选择poly,也即crci={1’b0,crci-1[31:1]}^poly,将更新校验码与校验码多项式异或;若crci-1[0]的值为0,则选择32’h0,也即crci={1’b0,crci-1[31:1]}^ 32’h0,将更新校验码与32’h0异或,32’h0表示32位全0数据。
[0065]
一种可能的实现方法中,若校验码为32位,则i取值为1至32,也即共有32个计算分支输出的校验码。
[0066]
上述方案,能够实现准确确定校验码。
[0067]
步骤404,确定校验码。
[0068]
一种可能的实现方法中,根据校验码算法指示信息中的数据长度,从各计算分支
输出的校验码中确定待校验数据对应的校验码。
[0069]
一种可能的实现方法中,校验码可以通过如下公式(4)得到:crc32_all = dsize==010? crc32 [31:0]: dsize==001? crc16[31:0]: dsize==000? crc8[31:0]:32’h0
ꢀ……
(4)其中,crc32_all表示校验码,dsize表示数据长度,如果是010,则表示将第32计算分支输出的32位校验码作为校验码;如果是001,则表示将第16计算分支输出的32位校验码作为校验码;如果是000,则表示将第8计算分支输出的32位校验码作为校验码;如果不是010或001或000,则crc32_all为32位全0数据,即32’h0。
[0070]
一种可能的实现方法中,原始数据的校验码为多组校验数据中的最后一组校验数据对应的校验码。该方案,能够使最终的校验码包含原始数据的信息,提高了校验码的复杂度和可靠性。
[0071]
一种可能的实现方法中,上述步骤401至步骤404的实现方法,通过硬件电路的方式实现,并将集成后的硬件计算电路集成于cpu中。
[0072]
基于相同的技术构思,图5示例性地示出了本技术实施例提供的一种处理器。如图5所示,包括处理器和计算电路,计算电路集成于处理器中,计算电路包括计算单元和输出单元。其中,通过该处理器确定校验码的过程如图6所示,该过程包括以下步骤:步骤601,cpu接收校验码计算指令。
[0073]
一种可能的实现方法中,cpu获取的原始数据,校验码计算指令包括校验码算法指示信息,cpu根据校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,并将每组校验数据发送给计算电路,计算电路依次对每组校验数据进行crc计算,其中,待校验数据是多组校验数据中的任一组。
[0074]
又一种可能的实现方法中,cpu获取的不是原始数据,而是一组校验数据。该组校验数据存储位置可通过校验码计算指令中的校验码存储指示信息获取。
[0075]
一种可能的实现方法中,cpu接收校验码计算指令,读取校验码计算指令的校验码标识,确定该校验码标识为001000,则认为cpu将进行crc计算,因此,从待校验数据指示信息中获取校验数据,从校验码存储指示信息获取输入校验码。如果校验码算法指示信息中的数据长度为8比特,则从待校验数据指示信息中获取8比特的数据作为校验数据;如果校验码算法指示信息中的数据长度为16比特,则从待校验数据指示信息中获取16比特的数据作为校验数据;如果校验码算法指示信息中的数据长度为32比特,则从待校验数据指示信息中获取32比特的数据作为校验数据。
[0076]
一种可能的实现方法中,待校验数据指示信息指的是存储校验数据的寄存器地址。
[0077]
步骤602,cpu确定校验码多项式。
[0078]
一种可能的实现方法中,根据校验码算法指示信息中的检验码算法的类型确定校验码多项式。
[0079]
步骤603,cpu将校验数据、输入校验码和多项式发送给计算电路。
[0080]
步骤604,输入单元确定待校验数据。
[0081]
一种可能的实现方法中,计算电路还包括掩码单元,掩码单元,用于针对任一组校验数据,若校验数据的数据长度小于计算分支的数量,则将校验数据的高位补0,得到校验数据对应的待校验数据,其中,待校验数据的数据长度等于计算分支的数量。示例性地,校验数据为8比特,将校验数据的其它24位补0,形成32位的待校验数据。
[0082]
步骤605,计算单元确定第0计算分支输出的校验码。
[0083]
步骤606,计算单元确定第i计算分支输出的校验码。
[0084]
步骤607,输出单元确定校验码。
[0085]
一种可能的实现方法中,输出单元根据校验码存储指示信息存储校验码,校验码存储指示信息指的是存储校验码的寄存器地址。
[0086]
步骤608,cpu接收输出单元发送的校验码。
[0087]
一种可能的实现方法中,cpu将原始数据划分为多组校验数据后,根据第一组校验数据确定校验码后,将第一组校验码作为输入校验码,重复上述步骤601至步骤608进行第二组校验码的确定,以此类推,直至多组校验数据均处理完成后,得到最终校验码。示例性地,原始数据为72比特,将原始数据按照32比特进行划分,确定三组校验数据,第一组校验数据为32比特,第二组校验数据为32比特,第三组数据为8比特,则第一组校验数据使用采用crc32w算法进行计算,得到第一组32位的校验码;将第一校验码作为第二组数据的输入校验码,第二组校验数据使用采用crc32w算法进行计算,得到第二组32位的校验码;将第二校验码作为第三组数据的输入校验码,第三组校验数据使用采用crc32b算法进行计算,得到第三组32位的校验码,则第三组32位的校验码为最终校验码,该最终校验码用于对原始数据进行校验。该最终校验码加上原始数据,帧头,帧尾组成一个完整的数据帧。
[0088]
基于相同的技术构思,图7示例性地示出了本技术实施例提供的一种处理器700。如图7所示,处理器700中集成有通过硬编码方式实现的计算电路701;计算电路701包括计算单元7011和输出单元7012;处理器700,用于获取校验码计算指令;校验码计算指令包括校验码算法指示信息;校验码计算指令属于处理器cpu指令集中的指令;根据校验码算法指示信息,确定校验码多项式;计算单元7011,用于通过计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的;输出单元7012,用于根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码。
[0089]
一种可能的实现方法中,所述计算单元还包括掩码单元7013;所述处理器700,还用根据所述校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据;所述掩码单元7013,用于将每组校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量;所述输出单元7012,具体用于将与所述数据长度对应的计算分支输出的校验码中确定所述待校验数据对应的校验码。
[0090]
一种可能的实现方法中,所述输入校验码为初始校验码或上一组待校验数据对应的校验码;所述原始数据的校验码为所述多组校验数据中的最后一组校验数据对应的校验码。
[0091]
一种可能的实现方法中,所述掩码单元7013,用于针对任一组校验数据,若所述校验数据的数据长度小于计算分支的数量,则将所述校验数据的高位补0,得到所述校验数据
对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量。
[0092]
一种可能的实现方法中,所述计算单元7011,用于将第i-1计算分支输出的校验码右移一位,并将最高位补齐,确定更新校验码;若第i-1计算分支输出的校验码的第0位的数值为1,则将更新校验码与校验码多项式异或后,确定第i计算分支输出的校验码;若第i-1计算分支输出的校验码的第0位的数值为0,则将更新校验码确定为第i计算分支输出的校验码。
[0093]
一种可能的实现方法中,所述校验码计算指令还包括校验码标识、待校验数据指示信息或校验码存储指示信息中的一种或多种;所述校验码标识用于指示cpu通过计算电路生成校验码;所述待校验数据指示信息用于指示每组校验数据的存储位置;所述校验码存储指示信息用于指示上一组校验数据对应的校验码的存储位置和/或待校验数据对应的校验码的存储位置。
[0094]
一种可能的实现方法中,所述处理器700,用于从预先存储有不同数据长度及不同校验码算法对应的校验码多项式,获取与所述校验码算法指示信息对应的校验码多项式。
[0095]
第三方面,本技术实施例提供一种电子设备,包括上述任意处理器。
[0096]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0097]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0098]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0099]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0100]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种校验码生成方法,其特征在于,应用于通过硬编码方式实现的计算电路;所述方法包括:获取校验码计算指令;所述校验码计算指令包括校验码算法指示信息;所述校验码计算指令属于处理器cpu指令集中的指令;根据所述校验码算法指示信息,确定校验码多项式;通过所述计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和所述校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的;根据所述校验码算法指示信息,从所述各计算分支输出的校验码中确定所述待校验数据对应的校验码。2.如权利要求1所述的方法,其特征在于,所述通过所述计算电路中的各计算分支,得到每个计算分支输出的校验码之前,还包括:根据所述校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据,并确定所述多组校验数据中的每组校验数据对应的待校验数据;所述根据所述校验码算法指示信息,从所述各计算分支输出的校验码中确定所述待校验数据对应的校验码,包括:将与所述数据长度对应的计算分支输出的校验码中确定所述待校验数据对应的校验码。3.如权利要求2所述的方法,其特征在于,所述输入校验码为初始校验码或上一组待校验数据对应的校验码;所述原始数据的校验码为所述多组校验数据中的最后一组校验数据对应的校验码。4.如权利要求2所述的方法,其特征在于,所述确定所述多组校验数据中的每组校验数据对应的待校验数据,包括:针对任一组校验数据,若所述校验数据的数据长度小于计算分支的数量,则将所述校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量。5.如权利要求1至4任一项所述的方法,其特征在于,所述通过对第i-1计算分支输出的校验码和所述校验码多项式进行计算得到第i计算分支输出的校验码,包括:将所述第i-1计算分支输出的校验码右移一位,并将最高位补齐,确定更新校验码;若所述第i-1计算分支输出的校验码的第0位的数值为1,则将所述更新校验码与所述校验码多项式异或后,确定所述第i计算分支输出的校验码;若所述第i-1计算分支输出的校验码的第0位的数值为0,则将所述更新校验码确定为所述第i计算分支输出的校验码。6.如权利要求1至4任一项所述的方法,其特征在于,所述校验码计算指令还包括校验码标识、待校验数据指示信息或校验码存储指示信息中的一种或多种;所述校验码标识用于指示cpu通过计算电路生成校验码;所述待校验数据指示信息用于指示每组校验数据的存储位置;所述校验码存储指示信息用于指示上一组校验数据对应的校验码的存储位置和/或待校验数据对应的校验码的存储位置。7.如权利要求1至4任一项所述的方法,其特征在于,根据所述校验码算法指示信息,确定校验码多项式,包括:
从预先存储有不同数据长度及不同校验码算法对应的校验码多项式,获取与所述校验码算法指示信息对应的校验码多项式。8.一种处理器,其特征在于,所述处理器中集成有通过硬编码方式实现的计算电路;所述计算电路包括计算单元和输出单元;所述处理器,用于获取校验码计算指令;所述校验码计算指令包括校验码算法指示信息;所述校验码计算指令属于处理器cpu指令集中的指令;根据所述校验码算法指示信息,确定校验码多项式;所述计算单元,用于通过所述计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和所述校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的;所述输出单元,用于根据所述校验码算法指示信息,从所述各计算分支输出的校验码中确定所述待校验数据对应的校验码。9.如权利要求8所述的处理器,其特征在于,所述计算单元还包括掩码单元;所述处理器,还用根据所述校验码算法指示信息中的数据长度,将原始数据划分为多组校验数据;所述掩码单元,用于将每组校验数据的高位补0,得到所述校验数据对应的待校验数据,其中,待校验数据的数据长度等于所述计算分支的数量;所述输出单元,具体用于将与所述数据长度对应的计算分支输出的校验码中确定所述待校验数据对应的校验码。10.一种电子设备,其特征在于,包括如权利要求8或9所述的处理器。
技术总结
本申请提供一种校验码生成方法、处理器及电子设备,该方法包括:获取校验码计算指令;校验码计算指令包括校验码算法指示信息;校验码计算指令属于处理器CPU指令集中的指令;根据校验码算法指示信息,确定校验码多项式;通过计算电路中的各计算分支,得到每个计算分支输出的校验码;其中,通过对第i-1计算分支输出的校验码和校验码多项式进行计算得到第i计算分支输出的校验码;i为正整数;第0计算分支输出的校验码是根据输入校验码和待校验数据生成的;根据校验码算法指示信息,从各计算分支输出的校验码中确定待校验数据对应的校验码。该方案,能够从硬件的角度实现对不同数据长度的校验数据的处理以及能够实现不同的校验算法类型。类型。类型。
技术研发人员:王思为 葛蕾
受保护的技术使用者:上海芯联芯智能科技有限公司
技术研发日:2023.08.31
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
