CN101305349A - 响应于用户级指令进行循环冗余校验和运算 - Google Patents
响应于用户级指令进行循环冗余校验和运算 Download PDFInfo
- Publication number
- CN101305349A CN101305349A CNA2006800422420A CN200680042242A CN101305349A CN 101305349 A CN101305349 A CN 101305349A CN A2006800422420 A CNA2006800422420 A CN A2006800422420A CN 200680042242 A CN200680042242 A CN 200680042242A CN 101305349 A CN101305349 A CN 101305349A
- 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
Links
- 125000004122 cyclic group Chemical group 0.000 title claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000012795 verification Methods 0.000 claims description 37
- 239000000872 buffer Substances 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 8
- 238000009825 accumulation Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 6
- 230000004087 circulation Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 240000004859 Gamochaeta purpurea Species 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/093—CRC update after modification of the information word
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/095—Error detection codes other than CRC and single parity bit codes
- H03M13/096—Checksums
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/157—Polynomial evaluation, i.e. determination of a polynomial sum at a given value
Abstract
在一个实施例中,本发明包括一种方法:在处理器中接收输入数据,并根据用于校验和运算的用户级指令在该处理器中对该输入数据进行校验和运算。例如,可以响应于用户级指令,在处理器自身中计算循环冗余校验和。说明了其它实施例,并声明了权利要求。
Description
技术领域
本发明各实施例涉及数据处理,更具体地,涉及确定诸如循环冗余校验(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
在各种实施例中,程序员可以使用这些用户级指令,例如作为内联函数来实现根据例如图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
用于64位源操作数和64位目的操作数的CRC32指令TEMP1[63-0]←BIT_REFLECT64(SRC[63-0])TEMP2[31-0]←BIT_REFLECT32(DEST[31-0])TEMP3[95-0]←TEMP1[63-0]<<32TEMP4[95-0]←TEMP2[31-0]<<64TEMP5[95-0]←TEMP3[95-0]XORTEMP4[95-0]TEMP6[31-0]←TEMP5[95-0]MOD211EDC6F41HDEST[31-0]←BIT_REFLECT(TEMP6[31-0])DEST[63-32]←00000000H |
表3
用于32位源操作数和32位目的操作数的CRC32指令TEMP1[31-0]←BIT_REFLECT32(SRC[31-0])TEMP2[31-0]←BIT_REFLECT32(DEST[31-0])TEMP3[63-0]←TEMP1[31-0]<<32TEMP4[63-0]←TEMP2[31-0]<<32TEMP5[63-0]←TEMP3[63-0]XORTEMP4[63-0]TEMP6[31-0]←TEMP5[63-0]MOD211EDC6F41HDEST[31-0]←BIT_REFLECT(TEMP6[31-0]) |
表4
用于16位源操作数和32位目的操作数的CRC32指令 |
TEMP1[15-0]←BIT_REFLECT16(SRC[15-0])TEMP2[31-0]←BIT_REFLECT32(DEST[31-0])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]) |
表5
用于8位源操作数和64位目的操作数的CRC32指令TEMP1[7-0]←BIT_REFLECT8(SRC[7-0])TEMP2[31-0]←BIT_REFLECT32(DEST[31-0])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-0])DEST[63-32]←00000000H |
表6
用于8位源操作数和32位目的操作数的CRC32指令TEMP1[7-0]←BIT_REFLECT8(SRC[7-0])TEMP2[31-0]←BIT_REFLECT32(DEST[31-0])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-0]) |
注意,这些伪代码片断的一般结构是相同的。首先,源寄存器中的数据是位反射的(即,以反向位顺序将其位放入临时寄存器)。目的寄存器也是类似位反射的。接着,可以对位反射的源和数据操作数都进行平移运算,更具体地是左移运算。然后,将所得到的值进行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运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210041335.9A CN102708022B (zh) | 2005-12-23 | 2006-12-07 | 响应于用户级指令进行循环冗余校验和运算 |
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 | ||
PCT/US2006/047234 WO2007078672A2 (en) | 2005-12-23 | 2006-12-07 | Performing a cyclic redundancy checksum operation responsive to a user-level instruction |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210041335.9A Division CN102708022B (zh) | 2005-12-23 | 2006-12-07 | 响应于用户级指令进行循环冗余校验和运算 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101305349A true CN101305349A (zh) | 2008-11-12 |
CN101305349B CN101305349B (zh) | 2012-05-02 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210041335.9A Active CN102708022B (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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096609A (zh) * | 2009-12-10 | 2011-06-15 | 英特尔公司 | 可编程循环冗余校验(crc)计算的指令集架构 |
CN104133736A (zh) * | 2014-07-29 | 2014-11-05 | 江苏宏云技术有限公司 | 一种矢量crc校验指令的设计方法 |
CN107145334A (zh) * | 2017-04-26 | 2017-09-08 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
CN107943611A (zh) * | 2017-11-08 | 2018-04-20 | 天津国芯科技有限公司 | 一种快速产生crc的控制装置 |
Families Citing this family (42)
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 |
US7886214B2 (en) * | 2007-12-18 | 2011-02-08 | Intel Corporation | Determining a message residue |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | 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 |
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指令执行效率的流水线结构及方法 |
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 |
CN107544863B (zh) * | 2017-06-26 | 2021-07-20 | 新华三技术有限公司 | 一种数据存储方法及装置 |
DE102017212181A1 (de) * | 2017-07-17 | 2019-01-17 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Bestimmen von Prüfsummen, Pufferspeicher und Prozessor |
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 | 华为技术有限公司 | 编码方法及装置 |
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 |
US11226905B2 (en) | 2019-04-01 | 2022-01-18 | Nutanix, Inc. | System and method for mapping objects to regions |
US11809382B2 (en) | 2019-04-01 | 2023-11-07 | Nutanix, Inc. | System and method for supporting versioned objects |
US11029993B2 (en) | 2019-04-04 | 2021-06-08 | Nutanix, Inc. | System and method for a distributed key-value store |
CN111800223B (zh) * | 2019-08-15 | 2023-06-23 | 北京京东尚科信息技术有限公司 | 生成发送报文、处理接收报文的方法、装置和系统 |
CN112445525A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
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 |
CN115150024B (zh) * | 2022-09-02 | 2022-11-18 | 无锡沐创集成电路设计有限公司 | 数据处理方法、装置、设备和介质 |
CN116861493B (zh) * | 2023-08-31 | 2024-03-29 | 上海芯联芯智能科技有限公司 | 一种校验码生成方法、处理器及电子设备 |
Family Cites Families (78)
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 |
US6912683B2 (en) | 2000-02-17 | 2005-06-28 | Analog Devices, Inc. | Method, apparatus, and product for use in generating CRC and other remainder based codes |
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 |
US6848072B1 (en) | 2000-09-19 | 2005-01-25 | Bbn Solutions Llc | Network processor having cyclic redundancy check implemented in hardware |
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 | 엘지전자 주식회사 | 가전기기 네트워크 제어시스템 |
WO2003032159A2 (en) | 2001-10-11 | 2003-04-17 | Altera Corporation | Error detection on programmable logic resources |
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> | データ記憶装置およびデータ処理方法 |
US7944920B2 (en) * | 2002-06-11 | 2011-05-17 | Pandya Ashish A | Data processing system using internet protocols and RDMA |
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 |
US7646788B2 (en) | 2005-08-03 | 2010-01-12 | The Boeing Company | TCP/IP tunneling protocol for link 16 |
US8335226B2 (en) * | 2005-08-03 | 2012-12-18 | Broadcom Corporation | Systems and methods to transmit information among a plurality of physical upstream channels |
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 |
US8572353B1 (en) | 2009-09-21 | 2013-10-29 | Tilera Corporation | Condensed router headers with low latency output port calculation |
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 |
-
2005
- 2005-12-23 US US11/316,772 patent/US7958436B2/en active Active
-
2006
- 2006-12-07 CN CN2006800422420A patent/CN101305349B/zh active Active
- 2006-12-07 DE DE112006003298.4T patent/DE112006003298B4/de active Active
- 2006-12-07 JP JP2008547301A patent/JP5269610B2/ja active Active
- 2006-12-07 WO PCT/US2006/047234 patent/WO2007078672A2/en active Application Filing
- 2006-12-07 CN CN201210041335.9A patent/CN102708022B/zh active Active
- 2006-12-12 TW TW095146431A patent/TWI360047B/zh active
-
2011
- 2011-04-29 US US13/097,462 patent/US8225184B2/en active Active
-
2012
- 2012-05-31 US US13/484,787 patent/US8413024B2/en active Active
-
2013
- 2013-03-12 US US13/796,032 patent/US8713416B2/en active Active
- 2013-07-12 US US13/940,647 patent/US8769385B2/en active Active
- 2013-07-12 US US13/940,691 patent/US8775911B2/en active Active
- 2013-07-12 US US13/940,681 patent/US8775910B2/en active Active
- 2013-07-12 US US13/940,659 patent/US8793559B2/en active Active
- 2013-07-12 US US13/940,706 patent/US8856627B2/en active Active
- 2013-07-12 US US13/940,665 patent/US8769386B2/en active Active
- 2013-07-12 US US13/940,696 patent/US8775912B2/en active Active
-
2014
- 2014-05-27 US US14/288,261 patent/US9116684B2/en active Active
- 2014-12-22 US US14/579,538 patent/US9262159B2/en active Active
-
2016
- 2016-01-28 US US15/009,152 patent/US9645884B2/en active Active
-
2017
- 2017-05-08 US US15/589,561 patent/US10379938B2/en active Active
-
2019
- 2019-08-12 US US16/538,812 patent/US11048579B2/en active Active
-
2021
- 2021-06-26 US US17/359,537 patent/US11899530B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096609A (zh) * | 2009-12-10 | 2011-06-15 | 英特尔公司 | 可编程循环冗余校验(crc)计算的指令集架构 |
US8732548B2 (en) | 2009-12-10 | 2014-05-20 | Intel Corporation | Instruction-set architecture for programmable cyclic redundancy check (CRC) computations |
US9047082B2 (en) | 2009-12-10 | 2015-06-02 | Intel Corporation | Instruction-set architecture for programmable Cyclic Redundancy Check (CRC) computations |
CN102096609B (zh) * | 2009-12-10 | 2017-04-12 | 英特尔公司 | 可编程循环冗余校验(crc)计算的指令集架构 |
CN104133736A (zh) * | 2014-07-29 | 2014-11-05 | 江苏宏云技术有限公司 | 一种矢量crc校验指令的设计方法 |
CN107145334A (zh) * | 2017-04-26 | 2017-09-08 | 龙芯中科技术有限公司 | 常量获取方法、装置、处理器及计算机可读存储介质 |
CN107943611A (zh) * | 2017-11-08 | 2018-04-20 | 天津国芯科技有限公司 | 一种快速产生crc的控制装置 |
CN107943611B (zh) * | 2017-11-08 | 2021-04-13 | 天津国芯科技有限公司 | 一种快速产生crc的控制装置 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101305349B (zh) | 响应于用户级指令进行循环冗余校验和运算 | |
EP3238044A1 (en) | Method and apparatus for performing reduction operations on a set of vector elements | |
EP1997006B1 (en) | Validating data using processor instructions | |
US7590930B2 (en) | Instructions for performing modulo-2 multiplication and bit reflection | |
CN114968653A (zh) | 一种zfs文件系统的raidz校验值的确定方法 |
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 |