用于执行循环冗余码检错的技术的制作方法

文档序号:7540023阅读:157来源:国知局
专利名称:用于执行循环冗余码检错的技术的制作方法
技术领域
本文所描述的本发明的实施方式涉及数据传输完整性,本发明的实施方式尤
其涉及可用于执行诸如使用循环冗余码(CRC)的数据检错算法中涉及的各种函数 的技术。
北旦 冃豕
循环冗余码(CRC)已在各种算法中用来确保从发送设备或系统向接收设备 或系统传送的数据的完整性。通常,CRC检错通过随传送的数据编码一表示该传 送的代码与一生成多项式之间的算术无进位除法运算(即,模2)的余数的码来实 现。然后,同一生成多项式可在接收器处在对所传送的数据进行的另一无进位除法 运算中使用,可将其结果与编码的余数值进行比较来检测所传送数据中的任何差 错。
执行CRC检错的一种现有技术包括"基于表"的算法,该算法用在包含预先 计算出的无进位除法运算中涉及的一个或多个算术运算的结果的表内的査找操作 来代替这一个或多个算术运算。例如,

图1示出现有技术的基于表的CRC检错算 法,其中32字节的寄存器包含与位流相关联的CRC码的当前值。存储在该寄存器 内的值代表待传送数据的增加。数据可在传送之前用CRC码来扩充。当来自该数 据的非扩充部分的新字节在CRC的计算中被使用时,在该新字节与包含当前CRC 值的寄存器的最低有效字节之间进行布尔"异或"(XOR)运算。XOR运算的结果 被用于索引有256个条目的表(例如每个条目有4字节),该表包含预先计算出的 表索引乘以值232与生成多项式之间的无进位(例如,模2)除法运算的结果。然 后,将从该表格的查找操作返回的字节与保持当前CRC值的寄存器的未被纳入考 虑的剩余字节(即,寄存器的3个最高有效字节)进行XOR。在进行XOR运算之 前,将这些字节向右移位一个字节的位置。该XOR运算的结果是要被用于扩充该 数据的下一个CRC值,并且被与老的CRC值保持在同一寄存器内。
参照图1讨论的运算需要处理资源(例如,循环时间和功率)来进行计算,
并且在实现CRC算法的计算机系统内还需要许多输入/输出和/或存储器访问操作。
使问题进一步复杂化的是许多实现CRC算法的系统在所传送的数据部分内使用位 反射技术这一事实。更具体地, 一些CRC生成算法(例如,"CRC32c")在CRC 码计算之前在它们各自的字节内对位进行反射。位反射是诸如字节或字节集合的二 进制数据段的位以镜像方式交换位置的过程。例如,"1010"经反射的表示是"0101"。 通常,位反射与处理器中特定寻址方案(例如,"小端(little endian)")的使用的 组合导致输入流的位被按适于由软件CRC生成算法快速处理的次序存储。
对于图1所示的现有技术CRC算法,应对数据的经反射版本还引入另一层面 的复杂性和计算强度。通常,许多现有技术CRC算法,尤其是那些使用基于表的 实现的算法可能需要过多的硬件和/或软件资源,并且实现这些算法的系统所需的 功率增大。
附图简要说明
要求保护的主题在本说明书的结语部分中被详细、明确地指出。然而,通过 阅读附图同时参考以下详细描述,可获得对要求保护的主题——就运算的组织和方 法而言——及其目的、特征和优点的最佳理解,附图中 图1示出循环冗余码(CRC)生成的现有技术实现。 图2是示出在执行本发明的至少一个实施方式时使用的运算的流程图。 图3示出根据本发明一实施方式的在无进位乘以二进制数据片时所涉及的各 种运算。
图4示出可在其中使用一个实施方式的点对点(PtP)计算机系统。 图5示出可在其中使用本发明一实施方式的前端总线(FSB)计算机系统。
详细描述
在以下详细描述中,阐述了许多具体细节以便于提供对要求保护的主题的透 彻理解。然而,本领域技术人员应该理解,要求保护的主题可在没有这些具体细节 的情况下实施。在其它实例中,未描述公知的方法、过程、组件和电路以避免混淆 要求保护的主题。
本说明书中对"一种实施方式"或"一实施方式"的引述表示与该实施方式 相关地描述的特定特征、结构或特性被包括在本发明至少一个实施方式中。本说明 书中各处出现术语"在一个实施方式中"不必然全部指代同一实施方式。
本发明的至少一个实施方式通过使用可用于执行由计算机实现的CRC生成算 法或其它计算算法的某些方面的两条新的微处理器指令来对现有技术的循环冗余
码(CRC)检错实现进行改进。贯穿本公开,术语"指令"的使用应当表示在由机
器执行时使该机器执行与该指令相称的各种操作的任何机器可读构造,诸如可由 "位"表示的一组电信号或电磁信号。例如,在一实施方式中,指令可以是计算机 可读指令,在由处理器执行时该指令使该处理器执行由该指令指示的或与该指令的 目的一致的一个或一组操作。特别地,在一实施方式中,指令可以是存储在诸如载 波、磁盘、半导体存储器设备、硬盘驱动器、压縮盘等的某种介质中的一组位或其 表示。与微处理器架构相关,术语"指令"的使用可表示用户可视的"宏指令",
诸如特定指令集架构(ISA)内的指令、或从根据ISA的宏指令得到或解码的"微 指令"。
不是如现有技术中那样依赖于基于表的CRC检错算法,本发明的至少一个实 施方式代之以包括两条新指令其一用于执行无进位(例如,模2)乘法,而另一 指令用于在待检错的数据段上进行位反射。在其它实施方式中,这两条指令可被组 合成一条指令,而在其它实施方式中,这两条指令可被细分成执行与这些指令一致 的某些任务的其它指令。
此外,在本发明一实施方式中,数据段的无进位除以一多项式生成元("生成 元generator")是由将生成元的模2算术倒数乘以该数据段的指令(例如"无进位 乘法"或称"CMUL"指令)来执行的。本公开中使用术语'模2算术倒数'来表 示以2为底的指数值与生成多项式的模2除法得到的商,其中以2为底的指数值的 幂等于生成多项式的次数与输入数据片的长度之和。在本发明又一实施方式中,对 己与生成多项式的倒数相乘的输入数据片进行反射。由此,在这种实施方式中,相 比于诸如使用基于表的CRC检错实现的一些现有技术CRC算法实现,执行无进位 除法必需的处理循环次数可得以减少。在某些实施方式中这可能成立,因为用户层 面的软件程序在生成将要随数据段编码的CRC时只能发放相对少量的指令(例如 在某些应用中为4条指令),而不能执行许多其它操作,诸如移位运算、异或(XOR) 布尔运算、以及査表操作。在某些实施方式中,作为本发明的一部分提出的这些指 令取代了所有这些示例性的现有技术运算,而在其它实施方式中,该指令可只取代 这些运算的一个子集。在任一情形中,本发明的实施方式可在现有技术实现的某些 部分上改进CRC检错性能。
在本发明一实施方式中,对要在其上进行CRC检错的数据段执行位反射。在
其它实施方式中,位反射可能并不必要,且可在不执行位反射的情况下用其相应数 据段生成CRC并将其随相应数据段编码。在本发明的又一实施方式中,位反射可
在CRC初始值上执行。在执行位反射的本发明一实施方式中,位反射可在CRC生 成之前执行。在其它实施方式中,位反射可在CRC生成之后执行。例如,在一实 施方式中,位反射("BREF")指令可在执行无进位乘法(CMUL)指令之前执行。
要在其上进行CRC检错的的数据段可以是任意大小,这取决于特定应用中什 么大小适当。为了本公开的目的,数据片输入大小(以位数计)表示成、",且生 成多项式的最大幂("次数")将被表示成""。将使用36位和64位数据段("片") 来说明示例。然而,应该理解,本发明的实施方式不限于32位和64位的片,而是 可包括大于或小于32位及64位的位的片。
CRC可通过计算无进位算术除法运算的余数而生成,其中被除数是将被检错 的数据流或数据流的一部分("数据片")而除数是一生成多项式。然后,可将该余 数编码到另一数据流中,并从发送设备或系统传送到接收设备或系统。可在接收器 处可进行相同操作来验证该数据流或数据片(为本公开的目的,"数据流"和"数 据片"可进行互换引用)的完整性。
通常,在一实施方式中,CRC可通过执行以下操作来计算选择可以取决于 应用的初始CRC值,在该初始CRC值与将在其上进行CRC检错的部分或整个(经 反射的或未经反射的)数据片之间执行异或布尔(XOR)运算,将CRC值从其当 前状态更新到下一状态,直到没有其它数据片要用相应的CRC进行编码或解码。 在一实施方式中,CRC值可根据如下所述的操作和计算进行更新。
在一实施方式中,余数值可根据下式生成<formula>formula see original document page 9</formula>
在上式中,"r"表示等于无进位除法运算的余数的数字(由"t"位表示),"S" 是等于要在其上进行CRC检错操作的数据片的值的数字(由"s"位表示)。S还 可以等于由等于S乘以2t+s的值表示的被除数的不全为零值的一组s个最高有效位 表示的值。同样在上式中,"g"是表示生成多项式的数字(由"t+l"位表示)。在 本文描述的本发明实施方式的说明中,g通常比r多用一位来表示。在上式中,将 数据片S乘以一常数,即2的t与s之和次幂,其结果通过使用模2除法除以生成 元g。
可以看出,上式等价于下式,在下式中,上式的余数是通过在数据片与多项
式生成元的倒数之间进行的无进位乘法运算而计算得到
rs位的片=Lt(g* x MS(S x q ))
在上式中,余数r可通过生成元g的t个最低有效位(在式中由"g*"表示) 与数据片S和常数21+5模2算术除以生成元g的"s+1 "位商q+的模2算术乘积的 s个最高有效位(在式中由"Ms"表示)的模2算术乘积的t个最低有效位(在式 中由"Lt"表示)来计算。上式可应用于任意数目的数据片。例如,如果数据片S 是32位的,则余数可通过下式计算
r32位的片=32!(g* x 32m(S x q+))
在上式中,"32m"表示S与q+的模-2算术乘积的32个最高有效位,其中q+ 是33位长(数据片长加一位)并表示常数2"除以生成元g的模-2算术商。在其 中数据片S为64位长的另一实施方式中,余数r可通过下式计算
f64位的片=32!(g815 x 64m(S x q+》
在该式中,"64m"表示S与q+的模2算术乘积的64个最高有效位,其中q+ 是65位长(数据片长加一位)并表示常数2^除以生成元g的模2算术商。
类似地,对应于8位数据片的余数s可通过下式计算
rs位的片=32!(g^ x 8m(S x q+))
在该式中,"8m"表示s与q+的模2算术乘积的8个最高有效位,其中q+是 33位长(数据片长加一位)并且表示常数2^除以生成元g的模2算术商。在本发 明的实施方式中,可以按不同次序执行各个运算以实现以上各式。图2是示出根据 本发明一实施方式的无进位乘法指令的处理中涉及的运算的流程图。
参考图2, g+和q+在运算201中计算。如以上所讨论的,gf表示生成元g的t 个最低有效位,而q+表示常数2t+s除以生成元g的s+l位模2算术商。数字q+可被 概念化为生成多项式的模2算术倒数。在运算205,将数据片S乘以q+。运算205 得到是s的位大小两倍的数字,该数字的s个最高有效位在运算210中被与§*相乘。 运算210得到"t+s-l"位的数字,该数字的t个最低有效位就是所需的余数r。
有利的是,从上述无进位乘法指令得到的余数r可通过使用一系列布尔XOR 运算来实现,正如在无进位除法运算情形中一样。因此,在一实施方式中,图2 所示的执行以上各式的运算可简化成一系列XOR和位移运算。这是因为无进位乘 法如同其名称所暗示的一样,并不包括因两个具有多个位的操作数间各次乘法运算 而导致的进位。例如,在涉及各有2位的操作数,其中两个操作数都由二进制值表 示,诸如11 x 11的乘法运算中,结果将是IOOI (二进制)。然而,在相同操作数 的无进位乘法中,结果应该是IOI,这可通过将操作数的经移位版本作XOR来得
到。无进位乘法的该有益特性使得本发明至少一个实施方式能够相对快速地计算 CRC。此外,因为在一实施方式中,无进位乘法由被设计成由处理硬件或软件执行
的指令执行,所以用户软件不需要进行本发明一实施方式中涉及的移位和XOR运
算。取而代之,这些运算可由该处理硬件或软件进行处理。
为了进一步示出根据本发明一实施方式的无进位乘法,图3示出将二进制数 据片11010与生成元的模2算术倒数011010无进位相乘所涉及的各种运算。首先, 对该数据片进行位反射以产生经反射的数据片01011。在一实施方式中,位反射通 过执行诸如以上讨论并在下文进一步详细描述的BREF指令的位反射指令得到。在 其它实施方式中,该数据片可不被位反射。然后,对经反射的数据片中除最低有效 位之外的所有位进行检查(从右至左)以判定它们是"1"还是"0"。由于二进制 无进位乘法的特性,只需要执行与数据片各最高有效位(即,除最低有效位之外的 所有位)中1的个数相等次数的XOR和左移位运算就能生成CRC。
在图3中,在从右至左检査数据片时,包含"1"值的第一非最低有效位的位 置是比特位置一301。相应地,将生成元的模2算术倒数011010的经左移位版本 310与生成元的模2算术倒数011010的未移位版本305进行XOR。数据片中从右 至左包含"1"值的下一个比特位置是比特位置三303。相应地,将生成元倒数310 的经左移位版本315与生成元倒数310进行XOR,其结果320就是所需结果。
在一实施方式中,以上参照图2和3讨论的实施方式的CRC检错算法可通过 使用根据任何给定ISA设计成由一个处理器或多个处理器执行的两条新指令来实 现。虽然在某些实施方式中,这些指令的操作可能取决于使用它们的特定ISA,但 是这些指令的功能可跨任何ISA应用。
在一实施方式中,使用位反射指令("BREF")来执行位交换功能,藉此在位 置"i"处的位与在位置处的位被交换,反之亦然,其中"1"是寄存器长 度,且i的范围可从O至l-l。在特定处理硬件实现中,BREF指令可通过以下方式 工作
DEST <-BREF(DEST)
在上述操作中,BREF指令对寄存器或其它存储结构("DEST")的内容执行 位反射操作,并将结果置于DEST中。在其它实施方式中,BREF指令可对除了 DEST之外的寄存器或其它存储结构的内容进行操作。不管具体硬件实现如何, BREF指令都起到返回经位反射的值的作用。
在一实施方式中,无进位乘法指令("CMUL")对一值的经位反射版本或原
始值进行操作以产生可随该值编码的CRC、或其某一更改版本。此外CMUL指令 可对应于各种长度的数据片,诸如32位数据片和64位数据片。取决于执行指令的 处理资源的微架构,可使用一个或多个寄存器或其它存储结构来存储CMUL指令 的操作数和/或结果。例如,在一实施方式中,32位CMUL指令可执行以下运算〈-CMUL(EAX)
在以上运算中,CMUL对源操作数与存储在32位寄存器或其它存储结构 "EAX"中的操作数执行无进位乘法运算,并将64位结果置于诸如通用寄存器等 的32位存储结构"EDX"和EAX。在其它实施方式中,CMUL可对存储在除EAX 之外的另一结构中的操作数进行运算。类似地,CMUL可通过对源操作数与存储 在两个32位存储结构或一个64位存储结构中的操作数执行运算并将128位结果存 储在两个64位寄存器或其它存储结构内来对存储在64位寄存器或其它存储结构中 的两个操作数执行运算。
在一实施方式中,由BREF和CMUL指令支持的以上各个运算在诸如微处理 器的半导体器件内的硬件逻辑中实现。在其它实施方式中,以上运算可通过使用软 件而由BREF和CMUL指令支持,而在其它实施方式中,以上参考BREF和CMUL 描述的运算可通过使用硬件逻辑和软件的某种组合来实现。为了说明对于32位数 据片操作数如何实现BREF和CMUL的至少一个示例,以下是根据本发明一实施 方式的在特定硬件配置中如何实现BREF和CMUL的讨论。在其它实施方式中, 也可使用其它硬件配置来实现BREF和CMUL。
指令BREF反射给定寄存器或其它存储结构的位,并且在一实施方式中,可 通过将各个存储结构条目适当"连线"到相应反射条目来实现。在一实施方式中, 反射可在单个处理器时钟周期内发生。在一实施方式中,指令CMUL在源操作数 与32位寄存器(例如"EAX")或64位寄存器(例如"RAX")之间执行无进位 (即,"多项式")乘法。结果是64位或128位数字,其中32 (或64)个最高有效 位被存储在诸如"EDX"的32位寄存器(或诸如"RDX"的64位寄存器)中, 且32 (或64)个最低有效位存储在寄存器EAX (或RAX)中。
描述输入^和B与输出C和D的位之间关系的逻辑函数可从无进位乘法运算 的规范中导出。
以下描述根据一实施方式的32位无进位乘法器的特定硬件实现 在一实施方式中,寄存器EAX存储对应于32位数据片的初始数字A
爿=[a31a30...a0]
假设一包含生成元的源操作数
5 = [631630...60]
乘法运算的结果可表示成 = [d3lK c3,c30…c。]
位a。是^的最低有效位。类似地,6。是万的最低有效位,c。是C的最低有效
位,^是D的最低有效位。在一实施方式中,数字D在此乘法完成之后在寄存器
EDX中找到,而数字C在此乘法完成之后在寄存器EAX中找到。
c0 = a060
c3l = a。631 fl々3。十…十a3160
以及
^ = o
d。 = a3A十<33062十...十a,63i
d[31:0]和c[31:0]的等式也可写成:
以及:
c,.=十a力,一,. 」=o 7 , 乂
31
《= ,"A+,"
以下描述其中执行64位无进位乘法的一实施方式
在一实施方式中,寄存器RAX存储对应于64位数据片的初始数字」
假设一包含生成元的源操作数
乘法运算的结果可表示成=[《3《2. 乂 c63c62…c0 ]
位"。是^的最低有效位。类似地,^是B的最低有效位,c。是C的最低有效 位,^是D的最低有效位。在一实施方式中,数D在此乘法完成之后在寄存器RDX 中找到,而数C可在乘法完成之后在寄存器RAX中找到。C0 = a0Z)0
C63 = 。A3 #62 … "6360
以及
《2 = a6A3
<i。 = a6262十...十
d[63:0]和c[63:0]的等式也可写成
c, = a力,, /=o J '力
以及
63
可以看出,以上&和di的等式的逻辑函数的每一个可通过使用XOR树在诸如 互补金属氧化物半导体(CMOS)逻辑的硬件中实现。在32位示例中,"最深"的 XOR树(包含最多次XOR运算)是用于实现函数C3,的那一个,它采用了32个输 入。根据一实施方式,在32位示例中,实现CMUL的全部XOR树可能用到的XOR 门总数由此等于1+2+...+30+31+30+29+...+1 =961,且在这一实施方式中可能用到 的AND门的总数是1+2+...+32+31+.= 1024。因此,根据一实施方式,实现 CMUL可能用到的门的总数为1985。
在64位示例中,根据一实施方式,实现CMUL指令的全部XOR树可能用到 的XOR门总数等于1+2+...+62+63+62+61+...+1 = 3969。此外,在这一实施方式中 可能用到的AND门的总数是1+2+...+64+63+...1 =4096。因此,根据一实施方式, 实现CMUL指令可能用到的门总数为8065。
如上所述,上述各式中的一个或多个可在软件中实现。"软件"可包括一条或 多条机器可读指令,这些指令在由机器执行时使该机器执行运算以实施本发明至少 一个实施方式。
图4示出可使用一实施方式的点对点(PtP)计算机系统。特别地,图4示出 其中处理器、存储器、和输入/输出设备由多个点对点接口互连的系统。
图4的系统还包括若干处理器,为清楚起见仅示出了其中两个处理器470、 480。处理器470、 480可各自包括一本地存储器控制器集线器(MCH) 472、 482 来与存储器22、 24连接。处理器470、 480可通过使用PtP接口电路478、 488经 由点对点(ptp)接口 450来交换数据。处理器470、 480可通过使用点对点接口电 路476、 494、 486、 498经由各个PtP接口 452、 454各自与芯片组490交换数据。 芯片组490也可经由高性能图形接口 439与高性能图形电路438交换数据。
本发明至少一个实施方式可位于图4的各个PtP总线代理内的处理核心中。 然而,本发明的其它实施方式可存在于图4系统内的其它电路、逻辑单元或装置中。 此外,本发明的其它实施方式可分布在图4所示的若干电路、逻辑单元或装置中。
图5示出可使用本发明一实施方式的前端总线(FSB)计算机系统。处理器 505从一级(Ll)高速缓存510和主存储器515存取数据。在本发明其它实施方式 中,高速缓存可以是计算机系统存储器分层结构内的二级(L2)高速缓存或其它 存储器。此外,在某些实施方式中,图5的计算机系统包括Ll高速缓存和L2高 速缓存两者,它们构成了在Ll与L2高速缓存之间共享一致性数据的包含式高速 缓存分层结构。在其它实施方式中,可存在一个以上的高速缓存分层结构。
在图5的处理器内示出的是本发明一实施方式506。然而,本发明其它实施方 式可在该系统内诸如图形控制器的其它装置内实现,或者分布在系统内硬件、软件 及其某种组合中。
主存储器可以在各种存储器源中实现,诸如动态随机存取存储器(DRAM)、 硬盘驱动器(HDD) 520、或通过网络接口 530位于计算机系统远程的包括各种存 储设备和技术的存储器源。高速缓存可位于处理器内或处理器附近,诸如在处理器 的局域总线507上。此外,高速缓存可包含诸如六晶体管(6T)单元的相对快速 的存储单元或者存取速度大致相等或更快的其它存储单元。
图5的计算机系统可以是可经由专用于PtP网络上各个代理的总线信号通信 的诸如微处理器的总线代理的点对点(PtP)网络。本发明的至少一个实施方式在 各个总线代理内或至少与其相关联,使得存储操作可在总线代理之间以迅捷方式进 行。
在以上说明书中,参照其具体实施方式
对本发明进行描述。然而,显而易见 的是可作出各种更改和变化而不背离本发明的较宽泛的精神和范围。因此,说明书 和附图应被视为说明而非限制。
权利要求
1.一种方法,包括对具有第一位数的第一二进制操作数与具有第二位数的第二二进制操作数执行第一无进位乘法运算;存储所述第一无进位乘法运算的结果的多个最高有效位,所述最高有效位的个数等于所述第一位数。
2. 如权利要求1所述的方法,还包括对所述第一二进制操作数执行位反射运算。
3. 如权利要求1所述的方法,其特征在于,所述第二二进制操作数是多项式 生成元的模-2算术倒数值。
4. 如权利要求1所述的方法,还包括在所述结果的所述多个最高有效位与一 循环冗余码(CRC)生成多项式中除所述CRC生成多项式的最高有效位之外的所 有位之间执行第二无进位乘法运算。
5. 如权利要求4所述的方法,还包括存储所述第二无进位乘法运算的结果的 多个最低有效位,所述最低有效位的个数比所述CRC生成元多项式的位数少一。
6. 如权利要求5所述的方法,其特征在于,所述第一二进制操作数是第一循 环冗余码(CRC)与一数据片的第一部分之间的布尔异或(XOR)运算的结果, 并且其中所述第二无进位乘法的结果构成第二 CRC。
7. 如权利要求6所述的方法,还包括在所述第二 CRC与一输出值之间执行 XOR运算以生成要随所述数据片的所述第一部分一起从发送器向接收器传送的第 三CRC。
8. 如权利要求7所述的方法,其特征在于,在所述无进位乘法运算之前执行位反射操作。
9. 一种其上存储有指令集的机器可读介质,所述指令集在由机器执行的情况下使所述机器执行一种方法,所述方法包括对具有第一位数的第一二进制操作数与具有第二位数的第二二进制操作数执行第一无进位乘法运算;存储所述第一无进位乘法运算的结果的多个最高有效位,所述最高有效位的 个数等于所述第一位数。
10. 如权利要求9所述的机器可读介质,其特征在于,所述方法还包括对所述 第一二进制操作数执行位反射操作。
11. 如权利要求IO所述的机器可读介质,其特征在于,所述第二二进制操作数是一多项式生成元的模2算术倒数值。
12. 如权利要求11所述的机器可读介质,其特征在于,所述方法还包括在所述结果的所述多个最高有效位与一第三二进制操作数中除了所述第三二进制操作 数的最高有效位之外的所有位之间执行第二无进位乘法运算。
13. 如权利要求12所述的机器可读介质,其特征在于,所述方法还包括存储 所述第二无进位乘法运算的结果的多个最低有效位,所述最低有效位的个数比所述 第三二进制操作数的位数少一。
14. 如权利要求13所述的机器可读介质,其特征在于,所述第一无进位乘法 运算仅通过执行单条指令来实现。
15. 如权利要求IO所述的机器可读介质,其特征在于,所述位反射操作仅通 过执行单条指令来实现。
16. 如权利要求12所述的机器可读介质,其特征在于,所述第二无进位乘法 运算仅通过执行单条指令来实现。
17. —种设备,包括第一逻辑,用于对具有第一位数的第一二进制操作数与具有第二位数的第二 二进制操作数执行第一无进位乘法运算;第一存储单元,用于存储所述第一无进位乘法运算的结果的多个最高有效位,所述最高有效位的个数等于所述第一位数。
18. 如权利要求17所述的设备,还包括用于对所述第一二进制操作数执行位 反射操作的第三逻辑。
19. 如权利要求17所述的设备,其特征在于,所述第二二进制操作数是一多 项式生成元的模2算术倒数值。
20. 如权利要求17所述的设备,还包括第二逻辑,用于在所述结果的所述多 个最高有效位与一第三二进制操作数中除了所述第三二进制操作数的最高有效位 之外的所有位之间执行第二无进位乘法运算。
21. 如权利要求20所述的设备,还包括用于存储所述第二无进位乘法运算的 结果的多个最低有效位的第二存储单元,所述最低有效位的个数比所述第三二进制 操作数的位数少一。
22. 如权利要求21所述的设备,其特征在于,所述第一二进制操作数是第一 循环冗余码(CRC)与一数据片的第一部分之间的布尔异或(XOR)运算的结果, 并且其中所述第二无进位乘法的结果构成第二 CRC。
23. 如权利要求23所述的设备,还包括XOR装置,用于在所述第二CRC与 一输出值之间执行XOR运算以生成要随所述数据片的所述第一部分一起从发送器 向接收器传送的第三CRC。
24. 如权利要求23所述的设备,还包括用于发送所述第三循环冗余码和所述 数据片的所述第一部分的发送器。
25. 如权利要求23所述的设备,还包括用于接收所述第三循环冗余码和所述 数据片的所述第一部分的接收器。
26. —种系统,包括处理器,用于执行指令以对具有第一位数的第一二进制操作数与具有第二位 数的第二二进制操作数执行第一无进位乘法运算;存储器,用于存储所述第一无进位乘法运算的结果的多个最高有效位,所述 最高有效位的个数等于所述第一位数。
27. 如权利要求26所述的系统,其特征在于,所述处理器被包含在发送设备内。
28. 如权利要求26所述的系统,其特征在于,所述处理器被包含在接收设备内。
29. 如权利要求26所述的系统,其特征在于,所述处理器包括用于在所述结 果的所述多个最高有效位与一第三二进制操作数中除了所述第三二进制操作数的 最高有效位之外的所有位之间执行第二无进位乘法运算的第二逻辑。
30. 如权利要求29所述的系统,其特征在于,所述存储器用于存储所述第二 无进位乘法运算的结果的多个最低有效位,所述最低有效位的个数比所述第三操作 数的位数少一。
全文摘要
一种执行无进位乘法和位反射运算的技术。更具体地,本发明的实施方式包括一种执行循环冗余码(CRC)生成的技术。
文档编号H03M13/09GK101185245SQ200680018423
公开日2008年5月21日 申请日期2006年5月25日 优先权日2005年5月25日
发明者M·科纳维斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1