响应于用户级指令进行循环冗余校验和运算的制作方法

文档序号:6569620阅读:193来源:国知局

专利名称::响应于用户级指令进行循环冗余校验和运算的制作方法
技术领域
:本发明各实施例涉及数据处理,更具体地,涉及确定诸如循环冗余校验(CRq的校验和。
背景技术
:在数据处理系统中,期望准确地接收第一地点与第二地点之间传输的数据,使得在第二地点也能准确地对所述数据进行额外处理。此外,为了能够检测数据传输中的错误,常在要发送的数据包上附加校验和。例如,发送源可以产生CRC和,并将其附加在要传输的数据上。可以根据多个不同算法之一计算该校验和,然后可以将该校验和与接收端处从接收数据产生的相应校验和进行比较。如果两个校验和相同,则所传输的数据正确。但是如果所产生的校验和与所传输的校验和不同,则表示出现错误。这种校验和用在网络技术中来检测传输错误。在不同应用中,会有实现CRC信息的不同方式。例如,可以以硬件或软件来进行CRC计算。为了以硬件实现CRC计算,通常在系统中提供专用的硬件引擎来进行CRC计算。因此,将要经受这种CRC计算的数据发送给该硬件引擎来计算CRC,然后将CRC附加在数据上,以便例如从该系统发送出去。使用这种卸载(offload)引擎会有各种缺点,包括发送数据到该引擎的开销。此外,进行无状态(statdess)的硬件卸载是很困难的。也就是说,通常还需要传输额外的基于状态的开销数据,增加了复杂度并减缓了有用工作的进程。因为很多系统缺乏这种卸载引擎,所以通常以软件进行CRC计算。为了以软件实现CRC计算,通常使用查找表方案。然而,CRC值的这种软件计算是出了名的缓慢、计算密集的运算。此外,查找表的存储占用量可能很大,影响性能。因此,这些缓慢的计算会降低网络性能,并且还进一步耗费处理资源。例如,可能采取5到15个循环来进行每个数据字节的CRC计算。结果是,对于高速网络中的一般用途,软件CRC性能太低。图1是根据本发明一个实施例的方法的流程图。图2是根据本发明一个实施例的处理器的方框图。图3是根据本发明一个实施例进行校验和运算的处理器一部分的方框图。图4是根据本发明一个实施例的处理器另一部分的方框图。图5是根据本发明一个实施例的系统的方框图。具体实施例方式在各种实施例中,将指令集架构(ISA)扩展用于计算校验和值可以影响校验和运算。更具体地,可以在ISA中提供一条用户级指令,使程序员能通过该指令在通用处理器(例如,中央处理器单元(CPU))中直接进行期望的、诸如CRC运算的校验和运算。CRC运算可以是32位CRC运算(即,产生32位运行余数(runningremainder)的CRC32运算,下面进一步讨论),并且,在不同的实施例中,该CRC运算可以对应于例如电气和电子工程协会(正EE)802.3以太网协议(2002年出版)或其它协议中使用的CRC。在不同的实现中,可以提供各种操作码指令来对不同数据分组进行CRC计算。虽然本发明的范围并非如此局限,但在某些实施例中,例如,可以用不同的操作码来支持在8、16、32和64位分组上的CRC计算。通过这种方式,可以无需査找表或诸如此类,以硬件方式快速进行CRC计算。此外,可以通过根据不同操作码进行的整数运算,使用通用的、架构可视的处理器进行这些计算。结果是,可以无需诸如网络卸载硬件的卸载硬件的开销和复杂度,在处理器中计算CRC。因此,可以出现更大数目的数据传输(例如,就每秒输入/输出(i/o)而言的数据传输)。注意,虽然这里主要结合CRC运算进行说明,但本发明的实施例也可以用于进行其它校验和运算。现在参考图1,示出了根据本发明一个实施例的方法的流程图。可以将方法100用于使用处理器硬件(例如,CPU的执行单元)上实现的用户级指令来获得校验和。如图1所示,方法100可以开始于在源或目的寄存器中对数据进行一系列异或(XOR)运算(方框llO)。注意,XOR运算可以对应于多项式算术运算,并且更具体地对应于多项式除法运算。例如,源寄存器中的数据可以对应于处理器已接收的或者要从处理器发送的处理器流水线中出现的数据。作为一个示例,可以为源寄存器提供对应于期望分组尺寸(例如,16位、32位或诸如此类)的缓存器中的数据分组,源寄存器可以是处理器的通用寄存器。可替换地,在某些实施例中,可以从存储器中获得源数据。目的寄存器可以对应于从XOR运算获得运行余数的存储位置。目的寄存器也可以是处理器的通用寄存器。在各种实施例中,可以在处理器流水线中的专用硬件内进行XOR运算。例如,可以对一个诸如整数执行单元的处理器执行单元进行电路扩展来实现一系列XOR运算。例如,该电路可以对应于一个XOR树,以便通过期望的多项式来处理多项式除法。在各种实施例中,可以将用于XOR运算的多项式硬连线(hard-wired)到XOR树的逻辑门中。此外,可以对该XOR树进行配置,以便通过诸如位反射以及诸如此类的XOR运算实现期望的预处理和后处理。此外,该XOR树逻辑可以包括多个部分,每个部分配置用以处理不同数据尺寸上的运算。仍参考图1,接着可以将结果存储进目的寄存器中,该结果对应于从XOR运算得到的运行余数(方框120)。注意,可以在系统初始化的时候,将该目的寄存器设定到预定值,例如,全一、全零或其它这样的值。然后,在进行校验和运算期间,用当前校验和运算结果来不断更新该运行余数。更具体地,可以将通过当前校验和运算实现的多项式除法的余数存储到目的寄存器中。接着,可以确定是否出现额外源数据(菱形130)。例如,在某些实施例中,缓存器可以包括系统已接收的、要进行校验和验证的数据。可以将该数据分块馈入源寄存器,以进行校验和运算。因此,在菱形130中可以确定该缓存器中是否出现了额外的源数据。如果出现了额外的源数据,可以将下一数据块提供给源寄存器,并且控制过程返回到如上讨论的方框110。相反,如果在菱形130确定未出现额外的源数据,那么控制过程进行到方框140。在那里,可以提供校验和运算结果,其为存储在目的寄存器中的当前值(例如,运行余数)(方框140)。正如上述讨论,可以以许多不同方式使用该校验和值。例如,在接收数据的情况下,可以将计算的校验和与接收的校验和相比较,以确定准确接收了该数据。在传输情况中,可以将校验和附加到要传输的数据上,使得在接收端能验证该数据。当然,也会有校验和的其它使用,诸如用于哈什(hash)函数或按照伪随机数方案产生数。可以根据期望的构架采用许多不同形式的处理器,来实现根据本发明一个实施例的校验和运算。现在参考图2,示出了根据本发明一个实施例的处理器的方框图。如图2所示,处理器200包括数据通路205。数据通路205可以受前端控制阶段的控制,前端控制阶段可以包括寄存器别名表(RAT)270,RAT270可以从处理器的前端(在图2中未示出)接收解码的指令。RAT270可以用于从前端接收微操作Oiop),并且为数据通路的资源重命名该pp。然后,在数据通路205中,可以将重命名后的pop提供给重排序缓存器(ROB)250。ROB205可以作为寄存器堆来存储pop以及对应的源操作数,直到已准备好将pop传到保留站(RS)230。类似地,ROB250也可以存储已执行的pop的相应结果。可以在ROB250中一直保存这些结果,直到该pop退役(此时释放该ROB条目)。可以将保留站230用于存储pp,直到出现它们相应的源操作数和/或直到准备好在数据通路205的多个执行单元之一中执行该pop。保留站230可以包括多个分发端口,以便将指令和数据耦合到数据通路205的选定的执行单元。在某些实施例中,可以在每个循环中使用多个分发端口。如图2所示,数据通路205中的执行单元包括地址产生单元(AGU)220、整数(INT)执行单元222、存储数据(STD)单元224、浮点(FP)执行单元226以及单指令多数据(SIMD)执行单元228。如图2所示,整数执行单元222还包括逻辑221。逻辑221可以包括一个或多个硬件引擎,以便进行根据本发明一个实施例的校验和运算。更具体地,逻辑221可以包括多个异或(XOR)逻辑树,以实现多项式算术操作以及相关的数据操作。在各种实施例中,逻辑221可以包括不同的硬件引擎,以便对不同尺寸的数据块执行CRC运算。作为一个示例,ISA的多个用户级指令每个可以针对一个特定数据尺寸定义一个CRC运算。在某些实施例中,逻辑221可以包括相应数目的单独硬件引擎,这里也指的是XOR树,以便实现这些不同的CRC运算。虽然在图2中未示出,但在不同实施例中可以出现附加的或不同的执行单元。在一个执行单元中执行完一个iiop之后,例如,可以将结果数据传回给RS230和ROB250以进行存储,直到退役。这样,在一个实施例中,用于进行CRC运算的源和数据寄存器可以位于RS230或ROB250中。虽然在图2中未示出,但可以认识到,在处理器200中可以存在诸如内存排序缓存(MOB)的附加缓存器以及其它资源。也可以认识到,图2中所示的内容是为了便于讨论,在各种实施例中,给定处理器中可以有更多阶段或不同命名的阶段。例如,可以将回写阶段耦合到执行单元,以便接收结果数据,稍后传递给内存体系。可替换地,可以将诸如存储缓存器、加载缓存器以及诸如此类的一个或多个其它缓存器耦合到RS230。作为一个示例,可以将一个或多个退役缓存器耦合到RS230,以便存储pop和有关结果数据,直到相关指令退役。当然,其它实现也是可能的。现在参考图3,示出了根据本发明一个实施例进行校验和运算的处理器一部分的方框图。如图3所示,示出了处理器300的一部分。更具体地,处理器300包括XOR树310、第一寄存器320和第二寄存器330,所有这些都可以是处理器流水线的一部分。在各种实施例中可以对XOR树310进行不同的配置。例如,可以使用第一级中的多个3输入XOR门,将它们的输出耦合到第二级中类似的XOR门,等等,来实现XOR树310。在这样一个实施例中,XOR树的每一级都可以是前一级大小的三分之一。当然,其它配置也是可能的。正如图3中进一步所示,处理器300包括缓存器340,缓存器340也可以处于处理器流水线中(例如,作为缓存、队列或诸如此类)。可替换地,缓存器340可以是与处理器300相关的高速缓冲存储器。在图3的实施例中,第一寄存器320可以与源寄存器相对应,而第二寄存器330可以与目的寄存器相对应。在各种实施例中,这些寄存器可以是处理器300中的通用寄存器。当然,处理器300可以包括很多其它寄存器、逻辑、功能单元以及诸如此类,并且图3中示出的部分是为了易于说明。如图3所示,为了根据本发明一个实施例执行校验和,至少将第一寄存器320的第一部分与第二寄存器330的一部分一起提供给XOR树310。在图3所示实施例中,其示出了8位CRC累加,从第一寄存器320提供给XOR树310单字节数据(S。),将第二寄存器330的4字节部分提供给XOR树310。该4字节部分可以对应于CRC32运算的运行余数。使用该数据,XOR树310可以通过XOR运算进行数据操作,以便产生一个包括余数部分的结果。如图3中所示,该余数部分可以是存储回第二寄存器330中的运行余数。通过这种方式,可以在最少的循环时间内并使用最少的处理器资源有效地进行CRC运算。在图3的实施例中,对于8位累加运算,可以将第一寄存器320的附加部分与第二寄存器330的当前内容(即,32位运行余数)一起递增地提供给XOR树310。因此,为在第一寄存器320中对64位数据获得CRC校验和,可以在XOR树310中进行八次XOR迭代运算,每次迭代使用来自第一寄存器320的单字节数据和第二寄存器330中的当前运行余数。如果在缓存器340中出现附加数据要通过校验和进行验证,则可以将该附加数据载入第一寄存器320中,然后可以在XOR树310中对其进行处理。注意,可以有不同的硬件来处理不同位宽度的CRC计算。因此,参考回图2,逻辑221可以包括不同的XOR树结构以便处理这种CRC计算。现在参考图4,示出了根据本发明一个实施例的处理器另一部分的方框图。如图4所示,处理器300包括不同的XOR树410(例如,不同于图3的XOR树310),将XOR树410耦合用于从第一寄存器320和第二寄存器330接收数据。正如图4中进一步所示,给出了缓存器340,其用于提供用于CRC计算的数据。注意,在图4的实施例中,对XOR树410进行配置以便处理64位CRC累加。因此,可以将第一寄存器320的整个内容(即,5。-57字节)一次性耦合到XOR树410,以便与第二寄存器330中的数据一起进行XOR运算。将结果数据存回第二寄存器330中,该结果数据的期望部分对应于运行余数。虽然以图3和图4中的具体实现进行了说明,但要认识到本发明的范围并非如此局限,在其它实施例中,可以有不同硬件配置来进行CRC运算。现在参考下表1,示出了指令集架构(ISA)的示例性指令列表,以支持根据本发明各实施例的CRC运算。如表1中所示,每条指令可以表示为操作码,可以将每条指令用于使用源寄存器和目的寄存器进行CRC32运算。正如所示,可能会有不同的风格,每条指令对给定尺寸的目的操作数和源操作数进行CRC运算。这样,参考表l的第一行,将该指令用于对8位源操作数和32位目的操作数进行CRC32运算。类似地,表1的第二行用于对16位的源操作数和32位的目的操作数进行CRC32运算。以类似的方式,表1的第三行示出了用于对32位源操作数和32位目的操作数进行CRC32运算的指令。因为这头三条指令是以32位的最大数据块执行的,所以注意这些指令在64位运算模式和传统(即,32位)运算模式中均有效。相反,表l的第四行和第五行表示对8位和64位源操作数以及64位目的操作数进行的CRC运算。这样,最后这两条指令仅在64位运算模式下执行。表1<table>tableseeoriginaldocumentpage12</column></row><table>在各种实施例中,程序员可以使用这些用户级指令,例如作为内联函数来实现根据例如图1流程图的CRC运算。通常,可以以下列方式实现用户级CRC指令。以第一操作数(即,目的操作数)中的初始值开始,可以将第二操作数(即,源操作数)的CRC32值累加,并将结果存储回该目的操作数中。在不同的实现中,源操作数可以是寄存器或存储器位置。目的操作数可以是32或64位寄存器。如果该目的操作数是64位寄存器,那么可以在最低有效双字中存储该32位结果,并在该寄存器的最高有效双字中存储00000000H。注意,目的操作数中提供的初始值可以是存储在32位寄存器中的双字整数,或者可以是64位寄存器的最低有效双字。为了递增地累加CRC32值,软件在目的操作数中保留了先前CRC运算结果,然后用源操作数中的新输入数据再次执行CRC运算。因此,每条指令在第一操作数中获得一个运行CRC值,并基于第二操作数更新该CRC值。以这种方式,通过循环执行该运算可以产生任何期望数据量的CRC,直到所有期望数据都经过了CRC运算。在某些实现中,以反射的位顺序处理包含在源操作数中的数据。对于源操作数的所有位来说,这意味着将源操作数的最高有效位作为商的最低有效位对待,等等。同样地,可以以反射的位顺序将CRC运算的结果存入目的寄存器中。对于CRC的所有位,这意味着将所得到的CRC的最高有效位(即,位31)存入目的存储器的最低有效位(位0),等等。虽然实现这些用户级指令可以有不同方式,但下表2至表6示出了表1中每条用户级指令的硬件实现的示例性伪代码表示。<table>tableseeoriginaldocumentpage13</column></row><table>表3<table>tableseeoriginaldocumentpage13</column></row><table>TEMP1[15-0]—BIT_REFLECT16(SRC[15画0])TEMP2[31-0]—BIT—REFLECT32(DEST[31-O])TEMP3[47-0〗一TEMP1[15-0〗《32TEMP4[47國0]—TEMP2[31誦0]《16TEMP5[47-0]—TEMP3[47-0]XORTEMP4[47-0]TEMP6[31-0]—TEMP5[47画0]MOD211EDC6F41HDEST[31-0]—BIT一REFLECT(TEMP6[31-0])__^_用于8位源操作数和64位目的操作数的CRC32指令TEMP1[7-0]—BIT—REFLECT8(SRC[7-0])TEMP2[M-0]—BIT一REFLECT32(DEST[31-O])TEMP3[39-0]—TEMPI[7-0]32TEMP4[39-0]—TEMP2[31-0]8TEMP5[39-0]—TEMP3[39-0]XORTEMP4[39画0]TEMP6[31陽0]—TEMP5〖39-0]MOD211EDC6F41HDEST[31-0]—BIT—REFLECT(TEMP6[31画O])DEST[63-32]—00000000H__^_用于8位源操作数和32位目的操作数的CRC32指令TEMP1[7-0]—BIT一REFLECT8(SRC[7-0])TEMP2[31-0]—BIT一REFLECT32(DEST[3l-O])TEMP3[39-0]—TEMP1[7-0]《32TEMP4[39-0]—TEMP2[31-0]8TEMP5[39-0]—TEMP3[39-0]XORTEMP4[39-0]TEMP6[31-0]—TEMP5[39-0]MOD211EDC6F41HDEST[31-0]—BIT一REFLECT(TEMP6[31-O])_注意,这些伪代码片断的一般结构是相同的。首先,源寄存器中的数据是位反射的(即,以反向位顺序将其位放入临时寄存器)。目的寄存器也是类似位反射的。接着,可以对位反射的源和数据操作数都进行平移运算,更具体地是左移运算。然后,将所得到的值进行XOR运算。该运算可以对应于除以选定多项式值的多项式除法。在不同实施例中该值可以采取不同形式,尤其是进行CRC32运算的具体实现中,多项式可以对应于11EDC6F41H,但是本发明的范围不限于此。将该多项式除法的余数(即,来自多项式模2除法的余数)可以以位反射的顺序存入目的操作数的低顺序位(例如,32位或64位寄存器的位0-31)。在64位寄存器的示例中,可以把零载入其余最高有效位(MSB)。虽然以相关于表2-6的具体实现来进行说明,但要认识到可以执行提供用户级CRC指令的其它方式。通过根据用户级指令在处理器流水线自身中进行CRC运算,没有必要将数据发送给卸载引擎。类似地,无需提供状态可以进行该运算,减小了开销。以这种方式,如在三循环通路中实现的,可以以每字节少于约0.4个循环来进行CRC运算。因此,在处理器流水线中可以使用用户级指令与专用硬件一起改进性能。此外,可以最小的资源消耗和功率损耗来实现三循环延迟。可以将本发明的实施例用于进行各种存储协议的处理,例如,速率大于10G比特每秒的互联网小型计算机系统接口(iSCSI)。本发明的实施例还允许使用出现在处理器中或与之紧密相连的数据,以减小所需的高速缓冲存储器上的数据。通过这种方式,可以将处理器缓存器中的数据馈入XOR树,以便能进行快速、飞速写入(on-the-fly)的CRC计算。可以以许多不同系统类型来实现多个实施例。现在参考图5,示出了根据本发明一个实施例的微处理器系统的方框图。如图5所示,该微处理器系统是点到点互连系统,包括了通过点到点互连450耦合的第一个处理器470和第二个处理器480。如图5所示,每个处理器470和480可以是多核处理器,包括第一和第二处理器核(即,处理器核474a和474b以及处理器核484a和484b)。虽然未示出每个图示,但第一处理器470和第二处理器480(更具体的处理器中的核)可以在它们的执行单元中包括XOR树逻辑,以便根据本发明一个实施例执行用户级CRC指令。第一处理器470还包括存储器控制中心(MCH)472以及点到点(P-P)接口476和478。类似地,第二处理器480包括MCH482和P-P接口486和488。如图5所示,MCH472和482将处理器耦合到各自的存储器,即存储器432和存储器434,它们可以是本地附加到各自处理器上的主存储器的部分。可以通过P-P互连452和454分别将第一处理器470和第二处理器480耦合到芯片组490。如图5所示,芯片组490包括P-P接口494和498。此外,芯片组490包括用于将芯片组490与高性能图形引擎438进行耦合的接口492。在一个实施例中,可以将高级图形端口(AGP)总线439用于耦合图形引擎438和芯片组490。AGP总线439可以符合加利福尼亚圣克拉拉的英特尔公司1998年5月4日出版的、變/7号为20游》/7遂苈#凝/7荽〃欢,芄。可替换地,点到点互连439也可以耦合这些组件。然后,可以通过接口496将芯片组490耦合到第一总线416。在一个实施例中,第一总线416可以是如1995年6月的产^廣本錄/7号为2.7游尸C/本邀^遂i^,;f规定的外围组件互连(PCI)总线、或者是诸如PCIExpress总线或另一种第三代输入/输出(i/o)互连总线的总线,但是本发明的范围不限于此。如图5所示,可以将各种I/O设备414和总线桥418耦合到第一总线416,总线桥418将第一总线416与第二总线420进行耦合。在一个实施例中,第二总线420可以是低管脚数(LPC)总线。在一个实施例中,可以将各种设备耦合到第二总线420上,例如这些设备包括键盘/鼠标422、通信设备426以及可以包含代码430的数据存储单元428。此外,可以将音频I/0424耦合到第二总线420。注意,其它架构也是可能的。例如,代替图5的点到点架构,系统可以实现多节点(multi-drop)总线或其他架构。可以用代码实现各实施例,并且可以存到存储介质上,这些介质上已存储了多条指令,可以对系统进行编程以使系统执行这些指令。该存储介质可以包括但并不限于任何类型的盘,包括软盘、光盘、压縮盘只读存储器(CD-ROM)、可重写的压縮盘(CD-RW)、以及磁光盘、诸如只读存储器(ROM)、随机访问存储器(RAM)(如动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、磁或光卡或者适于存储电子指令的任何其它类型介质的半导体设备。虽然已经就有限数目的实施例说明了本发明,但本领域的技术人员将会由此认识到多种修改和变体。所附权利要求有意覆盖落在本发明的真正精神和范围内的所有这些修改和变体。权利要求1.一种方法,包括在处理器中接收输入数据;以及响应于用于校验和运算的用户级指令,在所述处理器中对所述输入数据进行校验和运算。2、如权利要求1所述的方法,还包括在所述处理器的流水线中进行所述校验和运算,其中所述处理器包括通用处理器,并且其中所述校验和运算包括循环冗余校验(CRC)运算。3、如权利要求l所述的方法,还包括通过所述处理器的硬件引擎进行所述校验和运算,其中所述处理器包括通用处理器。4、如权利要求3所述的方法,还包括响应于所述用户级指令,在所述硬件引擎中进行多项式除法运算。5、如权利要求3所述的方法,其中所述硬件引擎包括耦合到源寄存器和目的寄存器的异或(XOR)树。6、如权利要求5所述的方法,还包括将来自所述源寄存器的所述输入数据和存储在所述目的寄存器的至少一部分中的当前值输入到所述XOR树中;使用所述输入数据和所述当前值在所述XOR树中进行所述校验和运算;以及将所述XOR树的输出存入所述目的寄存器中。7、如权利要求6所述的方法,其中所述XOR树的输出对应于所述校验和运算的运行余数。8、如权利要求7所述的方法,还包括当为所述源寄存器提供所述输入数据的缓存器为空时,将所述运行余数用作校验和。9、如权利要求l所述的方法,还包括将所述输入数据载入所述处理器的源寄存器中;反射所述输入数据;以及用所述反射的输入数据和来自目的寄存器的反射的数据进行至少一次异或(XOR)运算,并且以反射顺序将至少一次XOR运算的结果存入所述目的寄存器中。10、如权利要求1所述的方法,还包括无需查找表信息,使用所述输入数据和余数值在所述处理器的逻辑块中进行所述校验和运算。11、一种装置,包括用于存储源数据的第一寄存器;用于存储结果数据的第二寄存器;以及执行单元,其耦合到所述第一寄存器和所述第二寄存器,用所述源数据和所述结果数据进行循环冗余校验(CRC)运算,并将与所述CRC运算的运行余数对应的、所述执行单元的至少一部分输出提供给所述第二寄存器。12、如权利要求ll所述的装置,其中所述执行单元响应于用户级指令进行所述CRC运算。13、如权利要求11所述的装置,其中所述执行单元包括通用处理器流水线的异或(XOR)树逻辑。14、如权利要求13所述的装置,其中所述XOR树逻辑根据固定多项式进行多项式除法。15、如权利要求ll所述的装置,其中所述执行单元包括处理器流水线的整数单元,所述整数单元包括多个单独的逻辑块,每个逻辑块对不同尺寸的数据进行CRC运算。16、如权利要求15所述的装置,其中用户级指令指示出要被进行所述CRC运算的数据的尺寸。17、包括机器可读存储介质的物品,所述机器可读存储介质包括可由机器执行、以使所述机器执行一种方法的指令,所述方法包括根据来自第一寄存器的源操作数和第二寄存器的目的操作数,在处理器流水线的专用执行单元中累加循环冗余校验(CRC)值;将所述累加的CRC值存入所述第二寄存器中;以及确定是否有附加数据要进行所述CRC。18、如权利要求17所述的物品,其中所述方法还包括递增地累加所述CRC值,并将所述递增地累加的CRC值存入所述第二寄存器中,直到没有附加数据要进行所述CRC。19、如权利要求17所述的物品,其中所述方法还包括响应于所述处理器的指令集架构中用于所述CRC的指令,累加所述CRC值。20、如权利要求19所述的物品,其中所述方法还包括基于所述源操作数的尺寸在所述专用执行单元的多个部分之一中累加所述CRC值,其中所述指令指示出所述源操作数的尺寸。21、一种系统,包括处理器,其包括第一和第二执行单元以响应于所述处理器的指令集架构(ISA)的指令来进行运算,其中所述第一执行单元包括用于进行循环冗余校验(CRC)运算的硬件引擎,所述处理器还包括为所述硬件引擎提供源操作数的第一寄存器和为所述硬件引擎提供目的操作数的第二寄存器;以及耦合到所述处理器的动态随机访问存储器(DRAM)。22、如权利要求21所述的系统,其中所述第一执行单元包括整数单元,并且所述第二执行单元包括浮点单元。23、如权利要求21所述的系统,其中所述处理器包括为所述第一寄存器提供数据的缓存器。24、如权利要求23所述的系统,其中所述硬件引擎响应于所述ISA中用于所述CRC操作的一条或多条指令,对数据进行CRC运算,直到所述缓存器为空。25、如权利要求24所述的系统,其中所述硬件引擎将所述CRC运算的运行余数提供给所述第二寄存器。26、如权利要求21所述的系统,其中所述硬件引擎包括多个逻辑土央,每个逻辑块对不同尺寸的数据进行CRC运算。27、如权利要求26所述的系统,其中所述硬件引擎响应于所述ISA中用于给定数据尺寸的CRC运算的指令,将数据提供给所述多个逻辑块中对应于所述给定数据尺寸的一个逻辑块来进行所述CRC运算。全文摘要在一个实施例中,本发明包括一种方法在处理器中接收输入数据,并根据用于校验和运算的用户级指令在该处理器中对该输入数据进行校验和运算。例如,可以响应于用户级指令,在处理器自身中计算循环冗余校验和。说明了其它实施例,并声明了权利要求。文档编号G06F11/10GK101305349SQ200680042242公开日2008年11月12日申请日期2006年12月7日优先权日2005年12月23日发明者F·贝里,M·E·科纳维斯,S·R·金申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1