CN104133736A - 一种矢量crc校验指令的设计方法 - Google Patents

一种矢量crc校验指令的设计方法 Download PDF

Info

Publication number
CN104133736A
CN104133736A CN201410366239.0A CN201410366239A CN104133736A CN 104133736 A CN104133736 A CN 104133736A CN 201410366239 A CN201410366239 A CN 201410366239A CN 104133736 A CN104133736 A CN 104133736A
Authority
CN
China
Prior art keywords
crc
vector
data
instruction
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410366239.0A
Other languages
English (en)
Inventor
刘勇
陶建平
王和国
孙振玮
张永攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Grand Cloud Co Ltd
Original Assignee
Jiangsu Grand Cloud Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu Grand Cloud Co Ltd filed Critical Jiangsu Grand Cloud Co Ltd
Priority to CN201410366239.0A priority Critical patent/CN104133736A/zh
Publication of CN104133736A publication Critical patent/CN104133736A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开了一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。CRC指令运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。本发明充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据技术,极大地提高了CRC校验的效率,本发明的CRC指令具有吞吐率高、功耗低、成本低等特点。

Description

一种矢量CRC校验指令的设计方法
技术领域
一种DSP中矢量CRC校验指令的设计方法,涉及通信芯片中的数字信号处理,属于通信、存储领域,特别涉及数字信号处理芯片中CRC校验模块的设计。
背景技术
CRC编码是一种循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的一种差错校验码,其特征是信息字段和检验字段的长度可以任意选定。
CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个检验码r位,附在信息后,构成一个新的二进制码序列共(k+r)位,最后发送出去。接收端根据同样的规则校验,以确定传送中是否出错。
传统的CRC校验实现方法有软件方法和硬件方法,软件方法主要有直接计算法和查表法,直接计算法适用于所有长度的数据校验,最为灵活,但由于是按位计算,是一种串行计算方法,效率差,速度慢。查表法按字节计算CRC校验,是一种并行计算方法,但是需要提前存储一个256字节的表格,会占用较多的硬件资源。硬件实现方法的优点是计算速度快、效率高,但灵活性较差、不具有通用性,成本高。
随着通讯技术的发展,对数据的处理效率要求越来越高,越来越多的设计方法选择了CRC的硬件实现方式,为了克服硬件实现方式灵活性和通用性差的缺点,在处理器中设计CRC校验指令逐渐成为一种趋势,Intel公司提出了一套灵活CRC指令集(CN 102096609 A),任给一个CRC多项式和数据,都可以对数据进行多项式规定的CRC校验,其实现过程是首先通过多项式求模运算对CRC多项式进行扩展,得到预计算扩展多项式,然后对数据进行混洗,混洗后利用扩展多项式反复对数据在Galois域上做多项式除法,最后得到CRC校验结果,此种CRC指令集虽然使用灵活,但是实现流程复杂,运行效率较低。
本DSP主要面向通信领域,使用的CRC校验种类比较固定,所以直接在DSP中设计了CRC的专用指令,指令设计简单,运行效率高,设计方法与Intel的灵活CRC指令集有本质的区别。通过软件编程调用这些CRC指令即可快速完成CRC校验,实现简单、快速且节省资源。本发明利用SIMD(Single Instruction Multiple Data)技术、流水线技术和指令并发技术大幅提高了CRC校验的速率。同时,本CRC校验的专用指令共享了处理器的部分硬件资源,节省了硬件开销。
发明内容
本发明要解决的技术问题是:本发明设计了一种全新的矢量CRC执行单元,在此基础上完实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。
本发明解决其技术问题所采用的技术方案是:全新的矢量CRC执行单元由硬件复用管理单元和状态寄存器并行转移单元组成,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少了硬件开销;状态寄存器并行转移单元在输入8bit数据后只需要一个周期即可完成状态寄存器值的转移,运行效率高。
矢量CRC5校验指令是8路并行CRC校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC5并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的5bit数据即是CRC校验结果。
矢量CRC8校验指令是8路并行CRC校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC8并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的8bit数据即是CRC校验结果。
矢量CRC16校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC16并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的16bit数据即是CRC校验结果。
矢量CRC24校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC24并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的24bit数据即是CRC校验结果。
矢量CRC32校验指令,每次调用该指令可计算8bit数据,输入8bit数据后通过推导出的CRC32并行计算公式一个周期即可完成CRC计算,将所有数据计算完成后,结果寄存器中剩余的32bit数据即是CRC校验结果。
本方法不仅适用于以上CRC指令的设计,也适用了任意多项式CRC指令的设计,变换CRC的多项式,同样可以利用本方法设计出矢量CRC指令。
利用本方法不仅可以设计8路并行的CRC指令,也可以设计16路、32路并行的CRC指令,甚至可以设计任意路并行的CRC指令。
本方法的发明内容还包括利用这些CRC指令设计的CRC校验装置,利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了处理器的流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。
本发明的有益效果是:一种DSP中矢量CRC校验指令的设计方法,在DSP中设计了全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令以及利用这些专用指令设计的CRC校验装置。此设计方法设计的CRC专用指令,运行效率高,使用简单灵活,通用性强,大大简化了对数据进行CRC校验的程序设计。同时,CRC执行单元包含硬件复用管理单元,可以保证各条CRC指令充分复用DSP的硬件资源,使用较少的硬件资源实现了多条矢量CRC校验指令,节省了硬件资源,降低了成本。另外,本设计方法充分利用了处理器设计中的流水线技术、多指令并发技术和单指令多数据(Single Instruction Multiple Data,SIMD)技术,极大地提高了CRC校验的效率。此方法设计的CRC指令具有吞吐率高、功耗低、成本低等特点。
附图说明
图1CRC指令实施例的系统框图;
图2图1所示的处理器实施例的框图;
图3CRC指令执行单元实施例的框图;
图4CRC5实现原理框图;
图5CRC8实现原理框图;
图6多项式为0x1021的CRC16实现原理框图;
图7多项式为0x8005的CRC16实现原理框图;
图8多项式为0x04c11db7的CRC32实现原理框图;
图9利用本发明设计的CRC指令实现的CRC校验实现流程图;
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更佳清楚、明白,以下结合附图和实施例,对本发明进行进一步的详细说明,应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
本实施例使用的DSP是矢量数字信号处理器,数据总线位宽是16bit,最多支持8个16bit数据的并行乘加运算,拥有矢量viterbi指令,具有超高的数字信号处理性能。本发明使用的DSP并不局限于本实施例所使用的DSP,在任意的DSP中均可按照本设计提供的方法完成CRC指令的设计。
图1是本发明所设计的CRC指令实施例的系统100框图,系统100包括处理器101、程序存储器106和数据存储器108,处理器通过16bit位宽的总线对程序存储器进行访问,通过16bit位宽的数据总线对数据存储器进行访问。
处理器101包括程序访问控制器102、数据访问控制器104和CRC执行单元103,程序访问控制器102控制CRC指令的读取,数据访问控制器104控制计算数据的读取和CRC结果的存储,CRC执行单元103是CRC指令的执行单元。
图2是图1所示的处理器101的实施例框图,框图展示了CRC指令的执行过程,执行时需要3级流水线,在第一周期,在程序访问控制器的控制下,通过程序数据总线105将程序存储器106中的CRC指令读取到寄存器堆201中,此过程称为流水线的取指阶段。在第二周期,处理器将取出的CRC指令送入指令译码单元202进行译码,将译码结果存储到寄存器堆201的寄存器中,此过程称为流水线的译码阶段。在第三周期,根据译码结果在CRC执行单元103中执行CRC指令,此过程称为流水线的执行阶段,此过程需要一个周期,所以CRC指令为单周期指令。
本发明使用的DSP支持指令并发执行,在执行CRC的同时可以执行数据的访问指令,在数据访问控制器104的控制下,通过数据总线107将数据从数据存储器108中读取到寄存器堆201中,在CRC的执行阶段将数据载入到CRC执行单元103中,指令执行后将数据缓存到寄存器中,CRC计算完成后将结果通过数据访问指令存储到存储器108中。
以矢量CRC32指令的实施例为例说明指令的执行过程,在CRC执行单元103中执行的矢量CRC32指令(宏指令)用符号表示为:
crc32_0x04c11db7L(r1,r2,r3)
其中,r1、r2、r3是三个16bit的寄存器。矢量CRC32指令具有三个操作数,r1、r2和r3都是源操作数,同时r2和r3也是目的操作数据,CRC校验结果存储在r2和r3中。第一源操作数(“op1”)存储在寄存器堆201中的r1中,第一源操作数是将要进行CRC校验的数据;第二源操作数(“op2”)和第三源操作数(“op3”)存储在寄存器堆201中的r2和r3中,r2存储的是初始CRC余数的低16bit,r3存储的是初始CRC余数的高16bit。同时,r2和r3也是指令的目的操作数,CRC指令运算后的新余数再存回到r2和r3中,r2存储新CRC余数的低16bit,r3存储新CRC余数的高16bit。
r1是16bit寄存器,而指令crc32_0x04c11db7L是8bit并行指令,只对r1中的低8bit数据进行CRC计算,使用如下的指令对r1中的高8bit数据进行CRC计算:crc32_0x04c11db7H(r1,r2,r3)。
图3显示了CRC指令的执行过程,在流水线的执行阶段,硬件复用管理单元根据译码结果控制状态寄存器并行转移单元的运行,寄存器并行转移单元将3个源操作数据载入,一个周期完成状态寄存器的转移,状态寄存器中的值即是新的CRC余数,最后将状态寄存器中的值存储到目的寄存器r2和r3中。
以下以矢量CRC5指令、矢量CRC8指令、矢量CRC16指令和矢量CRC32指令的实施例来说明硬件复用管理单元和状态寄存器并行转移单元的设计。
CRC5的生成多项式为:g(x)=x5+x2+1.其实现原理框图如图4所示。设mi为输入信息序列,i=1,2,...,n,Rji表示输入mi后移位寄存器Rj(j=0,1,2,3,4)的状态值,由实现原理框图可得:
R0i=R4(i-1)⊕mi
R1i=R0(i-1)
R2i=R1(i-1)⊕R4(i-1)⊕mi
R3i=R2(i-1)
R4i=R3(i-1)
由此可推导出八路并行CRC校验公式为:
R08=R00⊕R20⊕R30⊕m2⊕m3⊕m5⊕m8
R18=R10⊕R30⊕R40⊕m1⊕m2⊕m4⊕m7
R28=R00⊕R30⊕R40⊕m1⊕m2⊕m5⊕m6⊕m8       ①
R38=R00⊕R10⊕R40⊕m1⊕m4⊕m5⊕m7
R48=R10⊕R20⊕m3⊕m4⊕m6
写成矩阵形式为:
R8=Scrc5R0                                 ②
其中,R8=[R08,R18,R28,R38,R48]H,表示输入8bit数据后新的CRC5状态寄存器的值,R0=[R00,R10,R20,R30,R40,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC初始余数和CRC校验数据组合成的向量, S crc 5 = 1,0,1,1,0,0,1,1,0,1,0,0,1 0,1,0,1,1,1,1,0,1,0,0,1,0 0,0,0,1,1,1,1,0,0,1,1,0,1 1,1,0,0,1,1,0,0,1,1,0,1,0 0,1,1,0,0,0,0 , 1 , 1,0,1,0,0 , Scrc5是一个5行13列的矩阵,是公式①各异或项的系数,可以看作是向量R0到R8的转移矩阵,公式②与普通矩阵的区别是在展开时将加法运算替换为异或运算。
CRC8的生成多项式为:g(x)=x8+x2+x+1.其实现原理框图如图5所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,7,由实现原理框图可得:
R0i=R7(i-1)⊕mi
R1i=R0(i-1)⊕R7(i-1)⊕mi
R2i=R1(i-1)⊕R7(i-1)⊕mi
Rni=R(n-1)(i-1),n=3,4,5,6,7
由此可推导出八路并行CRC校验公式为:
R08=R00⊕R60⊕R70⊕m1⊕m2⊕m8
R18=R00⊕R10⊕R60⊕m2⊕m7⊕m8
R28=R00⊕R10⊕R20⊕R60⊕m2⊕m6⊕m7⊕m8
R38=R10⊕R20⊕R30⊕R70⊕m1⊕m5⊕m6⊕m7
R48=R20⊕R30⊕R40⊕m4⊕m5⊕m6             ③
R58=R30⊕R40⊕R50⊕m3⊕m4⊕m5
R68=R40⊕R50⊕⊕60⊕m2⊕m3⊕m4
R78=R50⊕R60⊕R70⊕m1⊕m2⊕m3
写成矩阵形式为:
R8=Scrc8R0                               ④
其中,R8=[R08,R18,...,R78]H,表示输入8bit数据后新的CRC8状态寄存器的值,R0=[R00,R10,...,R70,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC8初始余数和CRC校验数据组合成的向量, S crc 8 = 1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1 1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1 1,1,1,0,0,0,1,0,0,1,0,0,0,1,1,1 0,1,1,1,0,0,0,1,1,0,0,0,1,1,1,0 0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0 0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0 0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0 , Scrc8是一个8行16列的矩阵,是公式③各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
多项式为0x1021的CRC16的生成多项式为:g(x)=x16+x12+x5+1.其实现原理框图如图6所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,15,由实现原理框图可得:
R0i=R(15)(i-1)⊕mi
R5i=R4(i-1)⊕R(15)(i-1)⊕mi
R(12)i=R(11)(i-1)⊕R(15)(i-1)⊕mi
Rki=R(k-1)(i-1),k=1,2,3,4,6,7,8,9,10,11,13,14,15
由此可推导出八路并行CRC16校验公式为:
R08=R80⊕R(12)0⊕m4⊕m8
R18=R90⊕R(13)0⊕m3⊕m7
R28=R(10)0⊕R(14)0⊕m2⊕m6
R38=R(11)0⊕R(15)0⊕m1⊕m5
R48=R(12)0⊕m4
R58=R80⊕R(12)0⊕R(13)0⊕m3⊕m4⊕m8
R68=R90⊕R(13)0⊕R(14)0⊕m2⊕m3⊕m7
R78=R(10)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m6       ⑤
R88=R00⊕R(11)0⊕R(15)0⊕m1⊕m5
R98=R10⊕R(12)0⊕m4
R(10)8=R20⊕R(13)0⊕m3
R(11)8=R30⊕R(14)0⊕m2
R(12)8=R40⊕R80⊕R(12)0⊕R(15)0⊕m1⊕m4⊕m8
R(13)8=R50⊕R90⊕R(13)0⊕m3⊕m7
R(14)8=R60⊕R(10)0⊕R(14)0⊕m2⊕m6
R(15)8=R70⊕R(11)0⊕R(15)0⊕m1⊕m5
写成矩阵形式为:
R8=Scrc16R0                                ⑥
其中,R8=[R08,R18,...,R(15)8]H,表示输入8bit数据后新的CRC16状态寄存器的值,R0=[R00,R10,...,R(15)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC16初始余数和CRC校验数据组合成的向量,Scrc16是一个16行24列的矩阵,是公式⑤各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
多项式为0x8005的CRC16的生成多项式为:g(x)=x16+x15+x⑥2+1.其实现原理框图如图7所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,15,由实现原理框图可得:
R0i=R(15)(i-1)⊕mi
R2i=R1(i-1)⊕R(15)(i-1)⊕mi
R(14)i=R(13)(i-1)⊕R(15)(i-1)⊕mi
R(15)i=R(14)(i-1)⊕R(15)(i-1)⊕mi
Rki=R(k-1)(i-1),k=1,3,4,5,6,7,8,9,10,11,12,13
由此可推导出八路并行CRC16校验公式为:
R08=R80⊕R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7⊕m8
R18=R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7
R28=R80⊕R90⊕m7⊕m8
R38=R90⊕R(10)0⊕m6⊕m7
R48=R(10)0⊕R(11)0⊕m5⊕m6
R58=R(11)0⊕R(12)0⊕m4⊕m5
R68=R(12)0⊕R(13)0⊕m3⊕m4
R78=R(13)0⊕R(14)0⊕m2⊕m3
R88=R00⊕R(14)0⊕R(15)0⊕m1⊕m2    ⑦
R98=R10⊕R(15)0⊕m1
R(10)8=R20
R(11)8=R30
R(12)8=R40
R(13)8=R50
R(14)8=R60
R(15)8=R70⊕R80⊕R90⊕R(10)0⊕R(11)0⊕R(12)0⊕R(13)0⊕R(14)0⊕R(15)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m6⊕m7⊕m8
写成矩阵形式为:
R8=S′crc16R0                      ⑧
其中,R8=[R08,R18,...,R(15)8]H,表示输入8bit数据后新的CRC16状态寄存器的值,R0=[R00,R10,...,R(15)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC16初始余数和CRC校验数据组合成的向量,S′crc16是一个16行24列的矩阵,是公式⑦各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
CRC32的生成多项式为:g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1.其实现原理框图如图8所示。设mi为输入信息序列,i=,1,2,...,n,Rji表示输入mi后移位寄存器Rj的状态值,j=0,1,2,3,...,31,由实现原理框图可得:
R0i=R(31)(i-1)⊕mi
R1i=R0(i-1)⊕R(31)(i-1)⊕mi
R2i=R1(i-1)⊕R(31)(i-1)⊕mi
R4i=R3(i-1)⊕R(31)(i-1)⊕mi
R5i=R4(i-1)⊕R(31)(i-1)⊕mi
R7i=R6(i-1)⊕R(31)(i-1)⊕mi
R8i=R7(i-1)⊕R(31)(i-1)⊕mi
R(10)i=R9(i-1)⊕R(31)(i-1)⊕mi
R(11)i=R(10)(i-1)⊕R(31)(i-1)⊕mi
R(12)i=R(11)(i-1)⊕R(31)(i-1)⊕mi
R(16)i=R(15)(i-1)⊕R(31)(i-1)⊕mi
R(22)i=R(21)(i-1)⊕R(31)(i-1)⊕mi
R(23)i=R(22)(i-1)⊕R(31)(i-1)⊕mi
R(26)i=R(25)(i-1)⊕R(31)(i-1)⊕mi
Rki=R(k-1)(i-1),k=3,6,9,13,14,15,17,18,19,20,21,24,25,27,28,29,30,31
由此可推导出八路并行CRC32校验公式为:
R08=R(24)0⊕R(30)0⊕m2⊕m8
R18=R(24)0⊕R(25)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m7⊕m8
R28=R(24)0⊕R(25)0⊕R(26)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m6⊕m7⊕m8
R38=R(25)0⊕R(26)0⊕R(27)0⊕R(31)0⊕m1⊕m5⊕m6⊕m7
R48=R(24)0⊕R(26)0⊕R(27)0⊕R(28)0⊕R(30)0⊕m2⊕m4⊕m5⊕m6⊕m8
R58=R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕R(29)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m3⊕m4⊕m5⊕m7⊕m8
R68=R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m3⊕m4⊕m6⊕m7
R78=R(24)0⊕R(26)0⊕R(27)x⊕R(29)0⊕R(31)0⊕m1⊕m3⊕m5⊕m6⊕m8
R88=R00⊕R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕m4⊕m5⊕m7⊕m8
R98=R10⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕m3⊕m4⊕m6⊕m7
R(10)8=R20⊕R(24)0⊕R(26)0⊕R(27)0⊕R(29)0⊕m3⊕m5⊕m6⊕m8
R(11)8=R30⊕R(24)0⊕R(25)0⊕R(27)0⊕R(28)0⊕m4⊕m5⊕m7⊕m8
R(12)8=R40⊕R(24)0⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m4⊕m6⊕m7⊕m8
R(13)8=R50⊕R(24)0⊕R(25)0⊕R(26)0⊕R(28)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m4⊕m6⊕m7⊕m8
R(14)8=R60⊕R(26)0⊕R(27)0⊕R(28)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m4⊕m5⊕m6
R(15)8=R70⊕R(27)0⊕R(28)0⊕R(29)0⊕R(31)0⊕m1⊕m3⊕m4⊕m5    ⑨
R(16)8=R80⊕R(24)0⊕R(28)0⊕R(29)0⊕m3⊕m4⊕m8
R(17)8=R90⊕R(25)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m7
R(18)8=R(10)0⊕R(26)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m6
R(19)8=R(11)0⊕R(27)0⊕R(31)0⊕m1⊕m5
R(20)8=R(12)0⊕R(28)0⊕m4
R(21)8=R(13)0⊕R(29)0⊕m3
R(22)8=R(14)0⊕R(24)0⊕m8
R(23)8=R(15)0⊕R(24)0⊕R(25)0⊕R(30)0⊕m2⊕m7⊕m8
R(24)8=R(16)0⊕R(25)0⊕R(26)0⊕R(31)0⊕m1⊕m6⊕m7
R(25)8=R(17)0⊕R(26)0⊕R(27)0⊕m5⊕m6
R(26)8=R(18)0⊕R(24)0⊕R(27)0⊕R(28)0⊕R(30)0⊕m2⊕m4⊕m5⊕m8
R(27)8=R(19)0⊕R(28)0⊕R(29)0⊕R(31)0⊕R(25)0⊕m1⊕m3⊕m4⊕m7
R(28)8=R(20)0⊕R(26)0⊕R(29)0⊕R(30)0⊕m2⊕m3⊕m6
R(29)8=R(21)0⊕R(27)0⊕R(30)0⊕R(31)0⊕m1⊕m2⊕m5
R(30)8=R(22)0⊕R(28)0⊕R(31)0⊕m1⊕m4
R(31)8=R(23)0⊕R(29)0⊕m3
写成矩阵形式为:
R8=Scrc32R0                ⑩
其中,R8=[R08,R18,...,R(31)8]H,表示输入8bit数据后新的CRC32状态寄存器的值,R0=[R00,R10,...,R(31)0,m1,m2,m3,m4,m5,m6,m7,m8,]H,是由CRC32初始余数和CRC校验数据组合成的向量,Scrc32是一个32行40列的矩阵,是公式⑨各个异或项的系数,可以看作是向量R0到R8的转移矩阵.
由公式①至公式⑩可以看出,各条CRC指令的状态转移矩阵Scrc是由各自的CRC多项式决定的,一旦CRC多项式确定了,状态转移矩阵Scrc也就确定了,各条CRC指令的本质区别就是其各自的转移矩阵Scrc不同,因此硬件复用管理单元的作用就是根据不同的CRC指令选择不同的转移矩阵Scrc。在指令的执行阶段,首先硬件复用管理单元根据不同的CRC指令选出该CRC指令对应的转移矩阵Scrc,然后从寄存器中将源操作数载入组成向量R0,然后根据各条CRC指令的状态转移公式在状态寄存器并行转移单元中完成状态转移,得到新的CRC余数R8,最后将R8存储到寄存器中。这样在硬件复用控制单元的控制下,仅利用一套硬件电路即可完成不同CRC指令的矢量运算,大幅减少了硬件资源开销。
在设计状态寄存器并行转移单元时对电路做了进一步优化,对各条CRC指令的状态转移矩阵Scrc做了进一步分析,找出每个Scrc都为0的异或项,然后将其从状态寄存器并行转移电路中去掉,这样可以进一步减少硬件开销。
本方法设计的CRC校验装置非常容易实现,只需调用本方法设计的CRC指令即可,降低了CRC设计的难度,首先将要校验的数据从存储器中读出,然后调用这些专用指令每次对8bit数据进行处理,当所有的数据做完CRC计算后,最后结果寄存器中剩余的数据即是CRC校验结果。在CRC校验装置实现时可以利用处理器的流水线技术和指令并发技术大幅提高运算速率。调用本方法设计的CRC指令完成CRC校验的实现流程如图9所示。
上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应当看作是对其他实施例的排出,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (10)

1.一种矢量CRC检验指令的设计方法,设计了一种全新的矢量CRC执行单元,在此基础上实现了矢量CRC5校验指令、矢量CRC8校验指令、矢量CRC16校验指令、矢量CRC24校验指令、矢量CRC32校验指令的设计以及使用这些指令设计的CRC校验装置。
2.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC执行单元包括硬件复用管理单元和状态寄存器并行转移单元,硬件复用管理单元控制各条矢量CRC指令充分复用硬件资源,可以保证使用较少的硬件资源即可完成多条矢量CRC指令的设计,减少了硬件开销;状态寄存器并行转移单元在输入8bit数据后只需要一个周期即可完成状态寄存器值的转移,执行时间短,运行效率高。
3.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC5校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的5bit数据即是CRC校验结果。
4.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC8校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的8bit数据即是CRC校验结果。
5.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述矢量CRC16校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的16bit数据即是CRC校验结果。
6.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC24校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的24bit数据即是CRC校验结果。
7.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的矢量CRC32校验指令:是一条8路并行CRC校验指令,每次将初始CRC余数和8bit数据送入CRC执行单元,一个周期后即可得出新的CRC余数,将所有数据计算完成后,状态寄存器中剩余的32bit数据即是CRC校验结果。
8.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法不仅适用于设计如权利要求1所述的各条CRC指令,也适用于设计任意多项式的CRC指令,按本文提供的设计方法可以设计出任意多项式的CRC校验指令。
9.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,本设计方法可以设计如权利要求2至权利要求6所述的8路并行的CRC指令,还可以设计任意路并行的CRC指令。
10.如权利要求1所述的一种矢量CRC检验指令的设计方法,其特征在于,所述的CRC校验装置:利用本方法设计的CRC指令和处理器的读取、存储数据指令完成CRC校验,在此CRC校验装置中充分利用了流水线技术和多指令并发技术,可以极大的提高CRC校验的效率。
CN201410366239.0A 2014-07-29 2014-07-29 一种矢量crc校验指令的设计方法 Pending CN104133736A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410366239.0A CN104133736A (zh) 2014-07-29 2014-07-29 一种矢量crc校验指令的设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410366239.0A CN104133736A (zh) 2014-07-29 2014-07-29 一种矢量crc校验指令的设计方法

Publications (1)

Publication Number Publication Date
CN104133736A true CN104133736A (zh) 2014-11-05

Family

ID=51806421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410366239.0A Pending CN104133736A (zh) 2014-07-29 2014-07-29 一种矢量crc校验指令的设计方法

Country Status (1)

Country Link
CN (1) CN104133736A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1148650A1 (en) * 2000-04-14 2001-10-24 Matsushita Electric Industrial Co., Ltd. Crc operation unit and crc operation method
CN1656495A (zh) * 2002-05-24 2005-08-17 皇家飞利浦电子股份有限公司 标量/矢量处理器
CN101305349A (zh) * 2005-12-23 2008-11-12 英特尔公司 响应于用户级指令进行循环冗余校验和运算
CN101496291A (zh) * 2006-07-17 2009-07-29 开曼晨星半导体公司 Lfsr仿真
CN103731239A (zh) * 2013-12-31 2014-04-16 中国科学院自动化研究所 一种适用于向量处理器的通用crc并行计算部件及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1148650A1 (en) * 2000-04-14 2001-10-24 Matsushita Electric Industrial Co., Ltd. Crc operation unit and crc operation method
CN1656495A (zh) * 2002-05-24 2005-08-17 皇家飞利浦电子股份有限公司 标量/矢量处理器
CN101305349A (zh) * 2005-12-23 2008-11-12 英特尔公司 响应于用户级指令进行循环冗余校验和运算
CN101496291A (zh) * 2006-07-17 2009-07-29 开曼晨星半导体公司 Lfsr仿真
CN103731239A (zh) * 2013-12-31 2014-04-16 中国科学院自动化研究所 一种适用于向量处理器的通用crc并行计算部件及方法

Similar Documents

Publication Publication Date Title
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
KR101846392B1 (ko) 보안 해시 알고리즘들을 처리하는 명령어 프로세서들, 방법들 및 시스템들
US9424039B2 (en) Instruction for implementing vector loops of iterations having an iteration dependent condition
US11121856B2 (en) Unified AES-SMS4—Camellia symmetric key block cipher acceleration
US20140108480A1 (en) Apparatus and method for vector compute and accumulate
US10540177B2 (en) Efficient zero-based decompression
US9419792B2 (en) Instruction for accelerating SNOW 3G wireless security algorithm
TW201717037A (zh) 用於緊耦合異質計算的硬體處理器及方法
KR101729829B1 (ko) 복수의 곱셈 연산들을 수행하는 방법 및 장치
US11250154B2 (en) Instruction execution that broadcasts and masks data values at different levels of granularity
US9336000B2 (en) Instruction execution unit that broadcasts data values at different levels of granularity
US9785436B2 (en) Apparatus and method for efficient gather and scatter operations
US11275583B2 (en) Apparatus and method of improved insert instructions
US10698685B2 (en) Instructions for dual destination type conversion, mixed precision accumulation, and mixed precision atomic memory operations
CN104126172A (zh) 用于掩码寄存器扩充操作的装置和方法
CN110059493A (zh) 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统
US9996347B2 (en) Hardware apparatuses and methods relating to elemental register accesses
EP3394755B1 (en) Apparatus and method for enforcement of reserved bits
CN109582364B (zh) 基于忆阻器的精简指令集处理器
US10838720B2 (en) Methods and processors having instructions to determine middle, lowest, or highest values of corresponding elements of three vectors
EP3716051A2 (en) Accelerator systems and methods for matrix operations
CN105005465B (zh) 基于比特或字节并行加速的处理器
WO2017117460A2 (en) Systems, methods, and apparatuses for improving vector throughput
CN104133736A (zh) 一种矢量crc校验指令的设计方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Liu Yong

Inventor after: Tao Jianping

Inventor after: Wang Heguo

Inventor after: Han Jingtong

Inventor after: Sun Zhenwei

Inventor after: Zhang Yongpan

Inventor before: Liu Yong

Inventor before: Tao Jianping

Inventor before: Wang Heguo

Inventor before: Sun Zhenwei

Inventor before: Zhang Yongpan

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LIU YONG TAO JIANPING WANG HEGUO SUN ZHENWEI ZHANG YONGPAN TO: LIU YONG TAO JIANPING WANG HEGUO HAN JINGTONG SUN ZHENWEI ZHANG YONGPAN

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20141105