CN102708022A - 响应于用户级指令进行循环冗余校验和运算 - Google Patents

响应于用户级指令进行循环冗余校验和运算 Download PDF

Info

Publication number
CN102708022A
CN102708022A CN2012100413359A CN201210041335A CN102708022A CN 102708022 A CN102708022 A CN 102708022A CN 2012100413359 A CN2012100413359 A CN 2012100413359A CN 201210041335 A CN201210041335 A CN 201210041335A CN 102708022 A CN102708022 A CN 102708022A
Authority
CN
China
Prior art keywords
computing
register
processor
data
crc
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.)
Granted
Application number
CN2012100413359A
Other languages
English (en)
Other versions
CN102708022B (zh
Inventor
S·R·金
F·贝里
M·E·科纳维斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102708022A publication Critical patent/CN102708022A/zh
Application granted granted Critical
Publication of CN102708022B publication Critical patent/CN102708022B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/093CRC update after modification of the information word
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/157Polynomial evaluation, i.e. determination of a polynomial sum at a given value

Abstract

在一个实施例中,本发明包括一种方法:在处理器中接收输入数据,并根据用于校验和运算的用户级指令在该处理器中对该输入数据进行校验和运算。例如,可以响应于用户级指令,在处理器自身中计算循环冗余校验和。说明了其它实施例,并声明了权利要求。

Description

响应于用户级指令进行循环冗余校验和运算
本申请是申请日为2006年12月7日、申请号为200680042242.0的同名专利申请的分案申请。
技术领域
本发明各实施例涉及数据处理,更具体地,涉及确定诸如循环冗余校验(CRC)的校验和。
背景技术
在数据处理系统中,期望准确地接收第一地点与第二地点之间传输的数据,使得在第二地点也能准确地对所述数据进行额外处理。此外,为了能够检测数据传输中的错误,常在要发送的数据包上附加校验和。例如,发送源可以产生CRC和,并将其附加在要传输的数据上。可以根据多个不同算法之一计算该校验和,然后可以将该校验和与接收端处从接收数据产生的相应校验和进行比较。如果两个校验和相同,则所传输的数据正确。但是如果所产生的校验和与所传输的校验和不同,则表示出现错误。这种校验和用在网络技术中来检测传输错误。
在不同应用中,会有实现CRC信息的不同方式。例如,可以以硬件或软件来进行CRC计算。为了以硬件实现CRC计算,通常在系统中提供专用的硬件引擎来进行CRC计算。因此,将要经受这种CRC计算的数据发送给该硬件引擎来计算CRC,然后将CRC附加在数据上,以便例如从该系统发送出去。使用这种卸载(offload)引擎会有各种缺点,包括发送数据到该引擎的开销。此外,进行无状态(stateless)的硬件卸载是很困难的。也就是说,通常还需要传输额外的基于状态的开销数据,增加了复杂度并减缓了有用工作的进程。
因为很多系统缺乏这种卸载引擎,所以通常以软件进行CRC计算。为了以软件实现CRC计算,通常使用查找表方案。然而,CRC值的这种软件计算是出了名的缓慢、计算密集的运算。此外,查找表的存储占用量可能很大,影响性能。因此,这些缓慢的计算会降低网络性能,并且还进一步耗费处理资源。例如,可能采取5到15个循环来进行每个数据字节的CRC计算。结果是,对于高速网络中的一般用途,软件CRC性能太低。
附图说明
图1是根据本发明一个实施例的方法的流程图。
图2是根据本发明一个实施例的处理器的方框图。
图3是根据本发明一个实施例进行校验和运算的处理器一部分的方框图。
图4是根据本发明一个实施例的处理器另一部分的方框图。
图5是根据本发明一个实施例的系统的方框图。
具体实施方式
在各种实施例中,将指令集架构(ISA)扩展用于计算校验和值可以影响校验和运算。更具体地,可以在ISA中提供一条用户级指令,使程序员能通过该指令在通用处理器(例如,中央处理器单元(CPU))中直接进行期望的、诸如CRC运算的校验和运算。CRC运算可以是32位CRC运算(即,产生32位运行余数(running remainder)的CRC32运算,下面进一步讨论),并且,在不同的实施例中,该CRC运算可以对应于例如电气和电子工程协会(IEEE)802.3以太网协议(2002年出版)或其它协议中使用的CRC。
在不同的实现中,可以提供各种操作码指令来对不同数据分组进行CRC计算。虽然本发明的范围并非如此局限,但在某些实施例中,例如,可以用不同的操作码来支持在8、16、32和64位分组上的CRC计算。通过这种方式,可以无需查找表或诸如此类,以硬件方式快速进行CRC计算。此外,可以通过根据不同操作码进行的整数运算,使用通用的、架构可视的处理器进行这些计算。结果是,可以无需诸如网络卸载硬件的卸载硬件的开销和复杂度,在处理器中计算CRC。因此,可以出现更大数目的数据传输(例如,就每秒输入/输出(I/O)而言的数据传输)。注意,虽然这里主要结合CRC运算进行说明,但本发明的实施例也可以用于进行其它校验和运算。
现在参考图1,示出了根据本发明一个实施例的方法的流程图。可以将方法100用于使用处理器硬件(例如,CPU的执行单元)上实现的用户级指令来获得校验和。如图1所示,方法100可以开始于在源或目的寄存器中对数据进行一系列异或(XOR)运算(方框110)。注意,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,RAT 270可以从处理器的前端(在图2中未示出)接收解码的指令。RAT270可以用于从前端接收微操作(μop),并且为数据通路的资源重命名该μop。然后,在数据通路205中,可以将重命名后的μop提供给重排序缓存器(ROB)250。ROB 205可以作为寄存器堆来存储μop以及对应的源操作数,直到已准备好将μop传到保留站(RS)230。类似地,ROB 250也可以存储已执行的μop的相应结果。可以在ROB 250中一直保存这些结果,直到该μop退役(此时释放该ROB条目)。
可以将保留站230用于存储μop,直到出现它们相应的源操作数和/或直到准备好在数据通路205的多个执行单元之一中执行该μop。保留站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中未示出,但在不同实施例中可以出现附加的或不同的执行单元。在一个执行单元中执行完一个μop之后,例如,可以将结果数据传回给RS 230和ROB 250以进行存储,直到退役。这样,在一个实施例中,用于进行CRC运算的源和数据寄存器可以位于RS 230或ROB 250中。虽然在图2中未示出,但可以认识到,在处理器200中可以存在诸如内存排序缓存(MOB)的附加缓存器以及其它资源。
也可以认识到,图2中所示的内容是为了便于讨论,在各种实施例中,给定处理器中可以有更多阶段或不同命名的阶段。例如,可以将回写阶段耦合到执行单元,以便接收结果数据,稍后传递给内存体系。可替换地,可以将诸如存储缓存器、加载缓存器以及诸如此类的一个或多个其它缓存器耦合到RS 230。作为一个示例,可以将一个或多个退役缓存器耦合到RS230,以便存储μop和有关结果数据,直到相关指令退役。
当然,其它实现也是可能的。现在参考图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单字节数据(B0),将第二寄存器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的整个内容(即,B0-B7字节)一次性耦合到XOR树410,以便与第二寄存器330中的数据一起进行XOR运算。将结果数据存回第二寄存器330中,该结果数据的期望部分对应于运行余数。虽然以图3和图4中的具体实现进行了说明,但要认识到本发明的范围并非如此局限,在其它实施例中,可以有不同硬件配置来进行CRC运算。
现在参考下表1,示出了指令集架构(ISA)的示例性指令列表,以支持根据本发明各实施例的CRC运算。如表1中所示,每条指令可以表示为操作码,可以将每条指令用于使用源寄存器和目的寄存器进行CRC32运算。正如所示,可能会有不同的风格,每条指令对给定尺寸的目的操作数和源操作数进行CRC运算。这样,参考表1的第一行,将该指令用于对8位源操作数和32位目的操作数进行CRC32运算。类似地,表1的第二行用于对16位的源操作数和32位的目的操作数进行CRC32运算。以类似的方式,表1的第三行示出了用于对32位源操作数和32位目的操作数进行CRC32运算的指令。
因为这头三条指令是以32位的最大数据块执行的,所以注意这些指令在64位运算模式和传统(即,32位)运算模式中均有效。相反,表1的第四行和第五行表示对8位和64位源操作数以及64位目的操作数进行的CRC运算。这样,最后这两条指令仅在64位运算模式下执行。
表1
Figure BDA0000137118860000071
在各种实施例中,程序员可以使用这些用户级指令,例如作为内联函数来实现根据例如图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中每条用户级指令的硬件实现的示例性伪代码表示。
表2
Figure BDA0000137118860000081
表3
表4
Figure BDA0000137118860000092
表5
Figure BDA0000137118860000093
表6
Figure BDA0000137118860000094
注意,这些伪代码片断的一般结构是相同的。首先,源寄存器中的数据是位反射的(即,以反向位顺序将其位放入临时寄存器)。目的寄存器也是类似位反射的。接着,可以对位反射的源和数据操作数都进行平移运算,更具体地是左移运算。然后,将所得到的值进行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包括MCH 482和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日出版的、修订号为2.0的加速图形端口接口规范。可替换地,点到点互连439也可以耦合这些组件。
然后,可以通过接口496将芯片组490耦合到第一总线416。在一个实施例中,第一总线416可以是如1995年6月的产品版本修订号为2.1的PCI本地总线规范所规定的外围组件互连(PCI)总线、或者是诸如PCI Express总线或另一种第三代输入/输出(I/O)互连总线的总线,但是本发明的范围不限于此。
如图5所示,可以将各种I/O设备414和总线桥418耦合到第一总线416,总线桥418将第一总线416与第二总线420进行耦合。在一个实施例中,第二总线420可以是低管脚数(LPC)总线。在一个实施例中,可以将各种设备耦合到第二总线420上,例如这些设备包括:键盘/鼠标422、通信设备426以及可以包含代码430的数据存储单元428。此外,可以将音频I/O424耦合到第二总线420。注意,其它架构也是可能的。例如,代替图5的点到点架构,系统可以实现多节点(multi-drop)总线或其他架构。
可以用代码实现各实施例,并且可以存到存储介质上,这些介质上已存储了多条指令,可以对系统进行编程以使系统执行这些指令。该存储介质可以包括但并不限于任何类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写的压缩盘(CD-RW)、以及磁光盘、诸如只读存储器(ROM)、随机存取存储器(RAM)(如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、磁或光卡或者适于存储电子指令的任何其它类型介质的半导体设备。
虽然已经就有限数目的实施例说明了本发明,但本领域的技术人员将会由此认识到多种修改和变体。所附权利要求有意覆盖落在本发明的真正精神和范围内的所有这些修改和变体。

Claims (27)

1.一种方法,包括:
在处理器中接收输入数据;以及
响应于用于校验和运算的用户级指令,在所述处理器中对所述输入数据进行校验和运算。
2.如权利要求1所述的方法,还包括在所述处理器的流水线中进行所述校验和运算,其中所述处理器包括通用处理器,并且其中所述校验和运算包括循环冗余校验(CRC)运算。
3.如权利要求1所述的方法,还包括通过所述处理器的硬件引擎进行所述校验和运算,其中所述处理器包括通用处理器。
4.如权利要求3所述的方法,还包括响应于所述用户级指令,在所述硬件引擎中进行多项式除法运算。
5.如权利要求3所述的方法,其中所述硬件引擎包括耦合到源寄存器和目的寄存器的异或(XOR)树。
6.如权利要求5所述的方法,还包括:
将来自所述源寄存器的所述输入数据和存储在所述目的寄存器的至少一部分中的当前值输入到所述XOR树中;
使用所述输入数据和所述当前值在所述XOR树中进行所述校验和运算;以及
将所述XOR树的输出存入所述目的寄存器中。
7.如权利要求6所述的方法,其中所述XOR树的输出对应于所述校验和运算的运行余数。
8.如权利要求7所述的方法,还包括当为所述源寄存器提供所述输入数据的缓存器为空时,将所述运行余数用作校验和。
9.如权利要求1所述的方法,还包括:
将所述输入数据载入所述处理器的源寄存器中;
反射所述输入数据;以及
用所述反射的输入数据和来自目的寄存器的反射的数据进行至少一次异或(XOR)运算,并且以反射顺序将所述至少一次XOR运算的结果存入所述目的寄存器中。
10.如权利要求1所述的方法,还包括无需查找表信息,使用所述输入数据和余数值在所述处理器的逻辑块中进行所述校验和运算。
11.一种装置,包括:
用于存储源数据的第一寄存器;
用于存储结果数据的第二寄存器;以及
执行单元,其耦合到所述第一寄存器和所述第二寄存器,用所述源数据和所述结果数据进行循环冗余校验(CRC)运算,并将与所述CRC运算的运行余数对应的、所述执行单元的至少一部分输出提供给所述第二寄存器。
12.如权利要求11所述的装置,其中所述执行单元响应于用户级指令进行所述CRC运算。
13.如权利要求11所述的装置,其中所述执行单元包括通用处理器流水线的异或(XOR)树逻辑。
14.如权利要求13所述的装置,其中所述XOR树逻辑根据固定多项式进行多项式除法。
15.如权利要求11所述的装置,其中所述执行单元包括处理器流水线的整数单元,所述整数单元包括多个单独的逻辑块,每个逻辑块对不同尺寸的数据进行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运算。
CN201210041335.9A 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算 Active CN102708022B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/316,772 US7958436B2 (en) 2005-12-23 2005-12-23 Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US11/316,772 2005-12-23
CN2006800422420A CN101305349B (zh) 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2006800422420A Division CN101305349B (zh) 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算

Publications (2)

Publication Number Publication Date
CN102708022A true CN102708022A (zh) 2012-10-03
CN102708022B CN102708022B (zh) 2015-07-08

Family

ID=38195339

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2006800422420A Active CN101305349B (zh) 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算
CN201210041335.9A Active CN102708022B (zh) 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2006800422420A Active CN101305349B (zh) 2005-12-23 2006-12-07 响应于用户级指令进行循环冗余校验和运算

Country Status (6)

Country Link
US (17) US7958436B2 (zh)
JP (1) JP5269610B2 (zh)
CN (2) CN101305349B (zh)
DE (1) DE112006003298B4 (zh)
TW (1) TWI360047B (zh)
WO (1) WO2007078672A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110945487A (zh) * 2017-07-17 2020-03-31 罗伯特·博世有限公司 用于确定校验和的方法和设备、缓冲存储器和处理器
CN111800223A (zh) * 2019-08-15 2020-10-20 北京京东尚科信息技术有限公司 生成发送报文、处理接收报文的方法、装置和系统
CN112445525A (zh) * 2019-09-02 2021-03-05 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
CN115150024A (zh) * 2022-09-02 2022-10-04 无锡沐创集成电路设计有限公司 数据处理方法、装置、设备和介质
CN116861493A (zh) * 2023-08-31 2023-10-10 上海芯联芯智能科技有限公司 一种校验码生成方法、处理器及电子设备

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US7827471B2 (en) * 2006-10-12 2010-11-02 Intel Corporation Determining message residue using a set of polynomials
US7852851B2 (en) * 2006-11-10 2010-12-14 Broadcom Corporation Method and system for hash table based routing via a prefix transformation
US8689078B2 (en) 2007-07-13 2014-04-01 Intel Corporation Determining a message residue
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
US7886214B2 (en) * 2007-12-18 2011-02-08 Intel Corporation Determining a message residue
GB2458665B (en) * 2008-03-26 2012-03-07 Advanced Risc Mach Ltd Polynomial data processing operation
CN101527615A (zh) * 2009-04-07 2009-09-09 华为技术有限公司 一种循环冗余校验crc码的实现方法和装置
US8543888B2 (en) * 2009-06-09 2013-09-24 Microchip Technology Incorporated Programmable cyclic redundancy check CRC unit
US8117496B2 (en) * 2009-06-18 2012-02-14 International Business Machines Corporation Detecting and recovering from silent data errors in application cloning systems
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8683307B2 (en) * 2011-05-27 2014-03-25 International Business Machines Corporation Checksum calculation, prediction and validation
CN103795502B (zh) * 2014-02-28 2017-04-12 杭州华三通信技术有限公司 一种数据帧校验码生成方法和装置
CN103984530B (zh) * 2014-05-15 2016-08-17 中国航天科技集团公司第九研究院第七七一研究所 一种提高store指令执行效率的流水线结构及方法
CN104133736A (zh) * 2014-07-29 2014-11-05 江苏宏云技术有限公司 一种矢量crc校验指令的设计方法
US9829899B2 (en) 2014-11-10 2017-11-28 Duke Energy Corporation Apparatuses including utility meter, power electronics, and communications circuitry, and related methods of operation
US20160191678A1 (en) * 2014-12-27 2016-06-30 Jesse C. Brandeburg Technologies for data integrity of multi-network packet operations
US10797722B2 (en) * 2016-06-10 2020-10-06 The Boeing Company System and method for providing hardware based fast and secure expansion and compression functions
US10255132B2 (en) * 2016-06-22 2019-04-09 Advanced Micro Devices, Inc. System and method for protecting GPU memory instructions against faults
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
CN107544863B (zh) * 2017-06-26 2021-07-20 新华三技术有限公司 一种数据存储方法及装置
US10594439B2 (en) 2017-09-08 2020-03-17 Huawei Technologies Co., Ltd. Channel encoding method and apparatus in wireless communications to output a polar encoded bit sequence
WO2019047788A1 (zh) 2017-09-08 2019-03-14 华为技术有限公司 编码方法及装置
CN107943611B (zh) * 2017-11-08 2021-04-13 天津国芯科技有限公司 一种快速产生crc的控制装置
CN108540137B (zh) * 2018-03-02 2021-09-03 江西清华泰豪三波电机有限公司 一种循环冗余校验码生成方法与装置
US11468037B2 (en) * 2019-03-06 2022-10-11 Semiconductor Components Industries, Llc Memory device and data verification method
US11809382B2 (en) 2019-04-01 2023-11-07 Nutanix, Inc. System and method for supporting versioned objects
US11226905B2 (en) 2019-04-01 2022-01-18 Nutanix, Inc. System and method for mapping objects to regions
US11029993B2 (en) 2019-04-04 2021-06-08 Nutanix, Inc. System and method for a distributed key-value store
US11704334B2 (en) 2019-12-06 2023-07-18 Nutanix, Inc. System and method for hyperconvergence at the datacenter
KR20210084871A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 안전 민감 데이터의 무결성 점검 장치 및 이를 포함하는 전자 기기
US11609777B2 (en) 2020-02-19 2023-03-21 Nutanix, Inc. System and method for multi-cluster storage
US20210334284A1 (en) 2020-04-28 2021-10-28 Nutanix, Inc. System and method of querying objects on demand
US11487787B2 (en) 2020-05-29 2022-11-01 Nutanix, Inc. System and method for near-synchronous replication for object store
US11900164B2 (en) 2020-11-24 2024-02-13 Nutanix, Inc. Intelligent query planning for metric gateway
US11822370B2 (en) 2020-11-26 2023-11-21 Nutanix, Inc. Concurrent multiprotocol access to an object storage system
US20220385488A1 (en) 2021-05-31 2022-12-01 Nutanix, Inc. System and method for reconciling consumption data
US11899572B2 (en) 2021-09-09 2024-02-13 Nutanix, Inc. Systems and methods for transparent swap-space virtualization
US11748019B2 (en) * 2021-10-26 2023-09-05 EMC IP Holding Company LLC Method to efficiently transfer support and system logs from air-gapped vault systems to replication data sources by re-utilizing the existing replication streams
US20230140404A1 (en) * 2021-11-02 2023-05-04 Paul Tsyganko System, method, and computer program product for cataloging data integrity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243729A1 (en) * 2000-09-19 2004-12-02 Bbnt Solutions Llc Network processor having cyclic redundancy check implemented in hardware

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253428A5 (zh) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US3891974A (en) 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US4351024A (en) * 1975-04-21 1982-09-21 Honeywell Information Systems Inc. Switch system base mechanism
US4130867A (en) * 1975-06-19 1978-12-19 Honeywell Information Systems Inc. Database instruction apparatus for determining a database record type
US4413319A (en) 1981-03-09 1983-11-01 Allen-Bradley Company Programmable controller for executing block transfer with remote I/O interface racks
US4438512A (en) * 1981-09-08 1984-03-20 International Business Machines Corporation Method and apparatus for verifying storage apparatus addressing
JPH0822448B2 (ja) 1987-06-26 1996-03-06 石川島播磨重工業株式会社 カロ−ゼルリ−ル装置
JP2818415B2 (ja) 1988-05-18 1998-10-30 日本電気株式会社 バッファ記憶装置
JPH0679276B2 (ja) * 1990-08-31 1994-10-05 インターナショナル・ビジネス・マシーンズ・コーポレイション 同一従属型プロセスのスループット増大方法、プロセス生成回路、周期冗長コードジェネレータ、およびコントローラシステム
US5369641A (en) * 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for detecting and correcting errors in data on magnetic tape media
DE69320321T2 (de) 1993-02-05 1998-12-24 Hewlett Packard Co Verfahren und Gerät zum Nachprüfen von CRC-Koden, wobei CRC Teilkode kombiniert werden
US5715278A (en) * 1993-05-11 1998-02-03 Ericsson Inc. Standby power saving in mobile phones
US5645159A (en) * 1994-03-30 1997-07-08 Lauener Engineering, Ltd. Method and apparatus for continuously casting metal
JP2814918B2 (ja) * 1994-07-07 1998-10-27 株式会社デンソー マイクロコンピュータ
US6237074B1 (en) 1995-05-26 2001-05-22 National Semiconductor Corp. Tagged prefetch and instruction decoder for variable length instruction set and method of operation
US5663952A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Checksum generation circuit and method
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5946467A (en) * 1996-09-20 1999-08-31 Novell, Inc. Application-level, persistent packeting apparatus and method
US5844923A (en) 1996-10-24 1998-12-01 At&T Corp Fast framing of nude ATM by header error check
US5960012A (en) 1997-06-23 1999-09-28 Sun Microsystems, Inc. Checksum determination using parallel computations on multiple packed data elements
US5974574A (en) * 1997-09-30 1999-10-26 Tandem Computers Incorporated Method of comparing replicated databases using checksum information
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6029186A (en) 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
US6012063A (en) * 1998-03-04 2000-01-04 Starfish Software, Inc. Block file system for minimal incremental data transfer between computing devices
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
JP2000124811A (ja) * 1998-10-12 2000-04-28 Hitachi Ltd 通信データ処理装置及びデータ受信システム
US6279140B1 (en) 1999-01-07 2001-08-21 International Business Machines Corporation Method and apparatus for checksum verification with receive packet processing
US6191614B1 (en) 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US6565443B1 (en) 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US6550002B1 (en) * 1999-11-04 2003-04-15 International Business Machines Corporation Method and system for detecting a flush of an instruction without a flush indicator
US6964008B1 (en) 1999-11-12 2005-11-08 Maxtor Corporation Data checksum method and apparatus
JP2003523682A (ja) * 2000-02-17 2003-08-05 アナログ デバイス インコーポレーテッド Crc、および他の剰余を基本とする符号の生成に用いる方法、装置、製品
US6631488B1 (en) 2000-06-30 2003-10-07 Agilent Technologies, Inc. Configurable error detection and correction engine that has a specialized instruction set tailored for error detection and correction tasks
US7292586B2 (en) * 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
KR100434270B1 (ko) 2001-05-30 2004-06-04 엘지전자 주식회사 가전기기 네트워크 제어시스템
JP4856848B2 (ja) * 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
US6907466B2 (en) * 2001-11-08 2005-06-14 Extreme Networks, Inc. Methods and systems for efficiently delivering data to a plurality of destinations in a computer network
US7454601B2 (en) 2002-03-28 2008-11-18 Intel Corporation N-wide add-compare-select instruction
JP2003346432A (ja) * 2002-05-22 2003-12-05 Internatl Business Mach Corp <Ibm> データ記憶装置およびデータ処理方法
US8005966B2 (en) * 2002-06-11 2011-08-23 Pandya Ashish A Data processing system using internet protocols
US6957321B2 (en) 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
US7103821B2 (en) * 2002-07-03 2006-09-05 Intel Corporation Method and apparatus for improving network router line rate performance by an improved system for error checking
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7313583B2 (en) * 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
US7327781B2 (en) * 2002-12-17 2008-02-05 Invensys Systems, Inc. Universal intelligent modem
US7421637B1 (en) * 2003-01-16 2008-09-02 Cisco Technology, Inc. Generating test input for a circuit
TWI220962B (en) 2003-01-20 2004-09-11 Mediatek Inc Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
US7082563B2 (en) 2003-01-31 2006-07-25 Italtel S.P.A. Automated method for generating the cyclic redundancy check for transmission of multi-protocol packets
US7392399B2 (en) 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
US7383428B2 (en) 2003-09-11 2008-06-03 International Business Machines Corporation Method, apparatus and computer program product for implementing atomic data tracing
US7826614B1 (en) 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
TWI224729B (en) 2003-12-15 2004-12-01 Mediatek Inc Method for determining program code
US7360142B1 (en) 2004-03-03 2008-04-15 Marvell Semiconductor Israel Ltd. Methods, architectures, circuits, software and systems for CRC determination
US8351468B2 (en) * 2004-04-05 2013-01-08 Broadcom Corporation Method and apparatus for downloading content using channel bonding
US7157944B1 (en) * 2004-04-27 2007-01-02 Altera Corporation Differential signal detector methods and apparatus
US7594124B2 (en) * 2004-06-09 2009-09-22 Intel Corporation Cross validation of data using multiple subsystems
US7676655B2 (en) 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7246191B2 (en) * 2005-03-31 2007-07-17 Intel Corporation Method and apparatus for memory interface
US7454667B2 (en) 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
US7590930B2 (en) * 2005-05-24 2009-09-15 Intel Corporation Instructions for performing modulo-2 multiplication and bit reflection
US7805706B1 (en) * 2005-06-21 2010-09-28 Unisys Corporation Process for optimizing software components for an enterprise resource planning (ERP) application SAP on multiprocessor servers
US8335226B2 (en) * 2005-08-03 2012-12-18 Broadcom Corporation Systems and methods to transmit information among a plurality of physical upstream channels
US7646788B2 (en) 2005-08-03 2010-01-12 The Boeing Company TCP/IP tunneling protocol for link 16
US20070067698A1 (en) 2005-09-19 2007-03-22 King Steven R Techniques to perform prefetching of content in connection with integrity validation value determination
US7523378B2 (en) 2005-09-23 2009-04-21 Intel Corporation Techniques to determine integrity of information
DE102005061394A1 (de) * 2005-12-22 2007-06-28 Robert Bosch Gmbh Fehlertolerantes Prozessorsystem
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7324913B2 (en) 2006-02-01 2008-01-29 International Business Machines Corporation Methods and apparatus for testing a link between chips
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7865704B2 (en) * 2006-03-29 2011-01-04 Freescale Semiconductor, Inc. Selective instruction breakpoint generation based on a count of instruction source events
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8209597B2 (en) 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US8521963B1 (en) 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8417961B2 (en) * 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8910031B1 (en) * 2011-03-29 2014-12-09 Emc Corporation DIF-CRC based fast hashing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243729A1 (en) * 2000-09-19 2004-12-02 Bbnt Solutions Llc Network processor having cyclic redundancy check implemented in hardware

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110945487A (zh) * 2017-07-17 2020-03-31 罗伯特·博世有限公司 用于确定校验和的方法和设备、缓冲存储器和处理器
CN110945487B (zh) * 2017-07-17 2024-03-08 罗伯特·博世有限公司 用于确定校验和的方法和设备、缓冲存储器和处理器
CN111800223A (zh) * 2019-08-15 2020-10-20 北京京东尚科信息技术有限公司 生成发送报文、处理接收报文的方法、装置和系统
CN111800223B (zh) * 2019-08-15 2023-06-23 北京京东尚科信息技术有限公司 生成发送报文、处理接收报文的方法、装置和系统
CN112445525A (zh) * 2019-09-02 2021-03-05 中科寒武纪科技股份有限公司 数据处理方法、相关设备及计算机可读介质
CN115150024A (zh) * 2022-09-02 2022-10-04 无锡沐创集成电路设计有限公司 数据处理方法、装置、设备和介质
CN116861493A (zh) * 2023-08-31 2023-10-10 上海芯联芯智能科技有限公司 一种校验码生成方法、处理器及电子设备
CN116861493B (zh) * 2023-08-31 2024-03-29 上海芯联芯智能科技有限公司 一种校验码生成方法、处理器及电子设备

Also Published As

Publication number Publication date
TW200809488A (en) 2008-02-16
CN102708022B (zh) 2015-07-08
US20150155883A1 (en) 2015-06-04
US20170242746A1 (en) 2017-08-24
US20120240016A1 (en) 2012-09-20
US9645884B2 (en) 2017-05-09
US9262159B2 (en) 2016-02-16
US20130191614A1 (en) 2013-07-25
US20130305011A1 (en) 2013-11-14
US20220091926A1 (en) 2022-03-24
WO2007078672A3 (en) 2007-09-13
US20130305118A1 (en) 2013-11-14
US8225184B2 (en) 2012-07-17
JP2009521059A (ja) 2009-05-28
US11048579B2 (en) 2021-06-29
US8775911B2 (en) 2014-07-08
US9116684B2 (en) 2015-08-25
US7958436B2 (en) 2011-06-07
US8775912B2 (en) 2014-07-08
US20160224411A1 (en) 2016-08-04
US8856627B2 (en) 2014-10-07
DE112006003298B4 (de) 2021-11-18
US20110231744A1 (en) 2011-09-22
US20130305116A1 (en) 2013-11-14
US20130305117A1 (en) 2013-11-14
US20130305016A1 (en) 2013-11-14
US20130305015A1 (en) 2013-11-14
US11899530B2 (en) 2024-02-13
US8713416B2 (en) 2014-04-29
US20070150795A1 (en) 2007-06-28
US20200159614A1 (en) 2020-05-21
US8769385B2 (en) 2014-07-01
JP5269610B2 (ja) 2013-08-21
US8775910B2 (en) 2014-07-08
US20130305115A1 (en) 2013-11-14
TWI360047B (en) 2012-03-11
US20140281798A1 (en) 2014-09-18
DE112006003298T5 (de) 2009-01-08
US10379938B2 (en) 2019-08-13
CN101305349B (zh) 2012-05-02
US8793559B2 (en) 2014-07-29
US8413024B2 (en) 2013-04-02
US8769386B2 (en) 2014-07-01
WO2007078672A2 (en) 2007-07-12
CN101305349A (zh) 2008-11-12

Similar Documents

Publication Publication Date Title
CN101305349B (zh) 响应于用户级指令进行循环冗余校验和运算
US7590930B2 (en) Instructions for performing modulo-2 multiplication and bit reflection
CN114968653B (zh) 一种zfs文件系统的raidz校验值的确定方法
US20240053989A1 (en) Hardware-based message block padding for hash algorithms
US20240061961A1 (en) Hardware-based implementation of secure hash algorithms
CN112148373A (zh) 用于具有完全相同电路块阵列的向量处理器架构的设备、方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant