CN101405699A - 利用处理器指令验证数据 - Google Patents
利用处理器指令验证数据 Download PDFInfo
- Publication number
- CN101405699A CN101405699A CNA2007800098440A CN200780009844A CN101405699A CN 101405699 A CN101405699 A CN 101405699A CN A2007800098440 A CNA2007800098440 A CN A2007800098440A CN 200780009844 A CN200780009844 A CN 200780009844A CN 101405699 A CN101405699 A CN 101405699A
- Authority
- CN
- China
- Prior art keywords
- data
- crc
- verification
- width
- impact damper
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
Abstract
在一个实施例中,本发明包括一种用于根据缓冲器中的数据块确定缓冲器的第一部分中的第一操作数的数量和缓冲器的第二部分中的第二操作数的数量的方法。基于这些数量,可以对第一和第二操作数迭代地执行循环冗余校验和(CRC)操作,以便获得校验和结果。第一和第二操作数具有不同的长度,并且可以利用对应于这些不同的长度的处理器指令来执行校验和操作。还描述其它实施例并对其它实施例要求权利。
Description
技术领域
本发明的实施例涉及数据处理,更具体地说,涉及诸如循环冗余校验(CRC)的校验和的确定。
背景技术
在数据处理系统中,应当准确地接收在第一位置与第二位置之间传送的数据,以使得在第二位置对该数据执行的额外处理同样准确。此外,为了能够检测到数据传输中的错误,常常会执行数据验证。数据验证的一个实例是通过使用附加到待传送的数据包中的校验和。例如,可以通过发送源生成CRC和,并将该CRC和附加到待传送的数据中。该校验和可以根据许多不同的算法中的一种算法来进行计算,然后可以将其与在接收端根据所接收的数据生成的类似的校验和进行比较。如果这两个校验和相同,则接收系统可以很有把握地确信所传送的数据是无讹误的。但是,如果所生成的校验和不同于所传送的校验和,则指示错误。在所有联网技术中都使用此类校验和来检测传输错误。其它用途包括数据库完整性、应用程序级数据完整性检查等。
在不同的应用中,存在不同的方式来实现CRC信息。例如,CRC计算可以在硬件或软件中执行。为了在硬件中实现CRC计算,通常在系统内提供专用硬件引擎来执行CRC计算。因此,将待进行该CRC计算的数据发送给该硬件引擎用于计算CRC,然后将该CRC附加到该数据,以用于例如从系统传输。利用这种卸载引擎存在各种缺点,包括增加了将数据发送给引擎的开销。此外,因为通常还需要传送基于状态的额外开销数据,所以难以执行无状态硬件卸载,从而增加了复杂性并减缓了有用工作的进度。
因为许多系统缺少这种卸载引擎,所以通常在软件中执行CRC计算。为了在软件中实现CRC计算,通常使用查找表方案。但是,CRC值的这种软件计算是出了名地慢的计算密集型操作。此外,查找表的存储器占用量会较大,从而影响性能。因此,这些缓慢的计算会使网络性能降级,并且还会消耗处理资源。作为一个实例,每字节数据执行一次CRC计算要花费5到15个处理器周期。因此,软件CRC性能对于高速网络中的一般使用来说太慢了。
附图说明
图1是根据本发明的一个实施例的方法的流程图。
图2是根据本发明的一个实施例的用于执行校验和操作的处理器的一部分的框图。
图3是根据本发明的一个实施例的处理器的另一部分的框图。
图4是根据本发明的一个实施例的系统的框图。
图5是根据本发明的一个实施例、用于生成校验和值的方法的流程图。
图6是可以在其中使用本发明的实施例的网络配置的框图。
具体实施方式
在各个实施例中,可以利用指令集体系结构(ISA)扩充来实现校验和操作以计算校验和值。更具体地说,可以在ISA内提供用户级指令,以便使程序员能够经由该指令而在通用处理器(如中央处理单元(CPU))中直接执行诸如CRC操作的所需校验和操作。CRC操作可以是32位CRC操作(即,生成32位运行余数的CRC32操作,下文将对此做进一步论述),并且在不同实施例中,可以例如对应于在电气和电子工程师协会(IEEE)802.3以太网协议(2002年发布)或其它协议中使用的CRC。
在不同的实现中,可以提供各种操作码指令来对不同的数据分组执行CRC计算。例如,在一些实施例中,可以利用不同的操作码来在8、16、32和64位的组上支持CRC计算,但本发明的范围不限于此。以此方式,可以在硬件中快速地执行CRC计算,而无需查找表等。此外,可以经由根据不同的操作码执行的整数操作利用在体系结构上可见的通用处理器寄存器来执行这些计算。结果是,可以在处理器中计算CRC,而无需诸如网络卸载硬件的卸载硬件的开销和复杂度。因此,可以进行更大数量的数据传输(例如,从每秒钟的输入/输出(I/O)方面来说)。注意,尽管本文主要结合CRC操作进行了描述,但本发明的实施例也可用于执行其它校验和操作。
此外,为了能够有效利用这些用户级指令,本发明的实施例还可划分或分割待进行校验和操作的数据。作为一个实例,可以将待进行校验和操作的任意大小的数据分割成多个数据组,每个数据组具有不同的基本宽度。这些基本宽度可以对应于不同操作码指令的宽度,如为8、16、32或64位。此外,可以选择这些分区以使得大部分数据位于对应于宽度最宽的指令的分区中,从而使得能够进行有效操作。另外,不同部分(例如,宽度最小的分区和宽度最大的分区)之间的划分可以对应于最宽宽度的自然对准边界(natural alignment boundary)。以此方式,可以通过硬件利用最少次数的数据迭代来实现校验和操作。
现在参照图1,示出根据本发明的一个实施例的方法的流程图。方法100可用于利用在处理器硬件(诸如CPU的执行单元)上实现的用户级指令来获得校验和。如图1所示,方法100可以从对源寄存器和目的地寄存器中的数据执行一系列异或(XOR)操作(方框110)开始。注意,XOR操作可以对应于多项式算术运算,更具体地说,可以对应于多项式除法运算。该运算可以对应于除以一个选定的多项式值的多项式除法。尽管在不同的实施例中,该值可以采用许多不同的格式,特别是在用于执行CRC32操作的实现中,多项式可以对应11EDC6F41H,但本发明的范围不限于此。源寄存器中的数据可以对应于例如已由处理器接收的处理器管线中存在的数据或待从此传送的处理器管线中存在的数据。作为一个实例,可以将对应于所需组大小(如16位、32位等)的缓冲器中的一组数据提供给源寄存器,该源寄存器可以是处理器的通用寄存器。或者,在一些实施例中,可以从存储器获得源数据。目的地寄存器可以对应于用于从XOR操作获得的运行余数(running remainder)的存储单元。目的地寄存器也可以是处理器的通用寄存器。
在各个实施例中,XOR操作可以在处理器管线内的专用硬件中执行。例如,可以利用用于实现一系列XOR操作的电路来扩展处理器的执行单元(如整数执行单元)。例如,该电路可以对应于用于处理以所需的多项式为除数的多项式除法的XOR树。在各个实施例中,在XOR操作中使用的多项式可以硬连线到XOR树的逻辑门。此外,XOR树可以配置成用于经由XOR操作实现所需的预处理和后处理,如位反射等。此外,XOR树逻辑可以包括多个分区,每个分区配置成用于处理对不同数据大小的操作。
仍然参照图1,接着,可以将对应于从XOR操作获得的运行余数的结果存储在目的地寄存器中(方框120)。注意,在将系统初始化之后,则可以将目的地寄存器设置成预定值,例如都为1、都为0或另一个这样的值。然后,在执行校验和操作期间,不断用当前的校验和操作的结果更新该运行余数。更具体地说,可以将通过当前的校验和操作实现的多项式除法的余数存储在目的地寄存器中。
接着,可以确定是否存在额外的源数据(判定方框130)。例如,在一些实施例中,缓冲器可以包括系统已接收并将验证校验和的数据。可以将数据成区块地馈送到源寄存器中以实现校验和操作。因此,可以在判定方框130中确定在该缓冲器中是否存在额外的源数据。如下文将进一步描述的,可以将缓冲器中的源数据划分成具有不同的基本宽度的段,其中每个基本宽度对应于用户级校验和指令的不同风格。如果存在额外的源数据,则将下一个数据区块提供给源寄存器,并且控制往后转到如上所述的方框110。
如果在判定方框130确定不存在任何额外的源数据,则控制转到方框140。在那里,可以提供校验和操作的结果作为存储在目的地寄存器中的当前值(如运行余数)(方框140)。如上所述,可以用许多不同的方式使用该校验和值。例如,在接收数据的情况下,可以将计算的校验和与所接收的校验和进行比较以确认准确地接收了数据。在传输情形下,可以将校验和附加到待传送的数据中以使得可以在接收端验证数据。当前,也可以有校验和的其它使用,如用于散列函数或依据伪随机编号方案生成数字。
取决于所需的体系结构,根据本发明的一个实施例、用于实现校验和操作的处理器可以采用许多不同的形式。现在参照图2,示出根据本发明的一个实施例用于执行校验和操作的处理器的一部分的框图。如图2所示,示出处理器300的一部分。更具体地说,处理器300包括XOR树310、第一寄存器320和第二寄存器330,所有这些都可以是处理器管线的一部分。在各个实施例中,XOR树310可以不同地配置。例如,XOR树310可以利用第一级中的多个3输入XOR门来实现,这些3输入XOR门的输出耦合到第二级中的类似的XOR门,依此类推。在该实施例中,XOR树的每一级可以是前一级的三分之一大。当然,其它配置也是可以的。
图2中还示出,处理器300包括缓冲器340,该缓冲器340也可以位于处理器管线内(例如,作为缓冲器、队列等)。或者,缓冲器340可以是与处理器300关联的高速缓存存储器。缓冲器340可以是用于临时存储待进行校验和操作的数据的任意大小的缓冲器。在一些实施例中,该数据可以对应于例如网络协议单元的大小。图2中还示出,定序器(sequencer)335可以耦合到缓冲器340。定序器335可以包括用于根据本发明的一个实施例执行数据分段以将缓冲器340内的数据有效地划分成不同段的逻辑,其中每个段预定用于执行给定数据宽度的校验和操作。
在图2的实施例中,第一寄存器320可以对应于源寄存器,而第二寄存器330可以对应于目的地寄存器。在各个实施例中,这些寄存器可以是处理器300内的通用寄存器。当然,处理器300可以包括许多其它寄存器、逻辑、功能单元等,图2中示出的部分只是为了便于说明。
如图2所示,根据本发明的一个实施例,为了执行校验和,将第一寄存器320的至少第一部分以及第二寄存器330的一部分提供给XOR树310。在示出8位CRC累积的图2所示的实施例中,将单个字节的数据(B0)从第一寄存器320提供给XOR树310,同时将第二寄存器330的4字节部分提供给XOR树310。该4字节部分可以对应于CRC32操作的运行余数。利用该数据,XOR树310可以经由XOR操作执行数据处理以生成包括余数部分的结果。该余数部分可以是存储回第二寄存器330的运行余数,如图2所示。以此方式,可以在最小的周期时间内利用最少的处理器资源有效地执行CRC操作。在图2的实施例中,对于8位累积(accumulate)操作,可以将第一寄存器320的额外部分连同第二寄存器330的当前内容(即,32位运行余数)递增地提供给XOR树310。因此,为了获得对第一寄存器320中的64位数据的CRC校验和,可以在XOR树310中执行8次XOR操作迭代,每次迭代利用来自第一寄存器320的单个字节的数据以及第二寄存器330中的当前运行余数。
注意,可以存在不同的硬件来处理不同位宽度的CRC计算。例如,逻辑可以包括不同的XOR树结构来处理这些CRC计算。现在参照图3,示出根据本发明的一个实施例的处理器的另一部分的框图。如图3所示,处理器400包括不同的XOR树410(例如,除了图2中的XOR树310之外),该XOR树410经耦合以便从第一寄存器320和第二寄存器330接收数据。图3中还示出,存在缓冲器340,该缓冲器340可用于提供数据以进行CRC计算。定序器335可以控制将缓冲器340中的数据划分成不同的段。注意,在图3的实施例中,XOR树410配置成用于处理64位CRC累积。因此,可以将第一寄存器320的全部内容(即,字节B0-B7)一次性地耦合到XOR树410以用于在XOR操作中与第二寄存器330中的数据一起处理。将结果数据存储回第二寄存器330,该结果数据的所需部分对应于运行余数。尽管用图2和3中的这些特定实现进行了描述,但应了解,本发明的范围不限于此,并且在其它实施例中,可以存在用于执行CRC操作的不同硬件配置。
现在参照下表1,示出用于支持根据本发明的各个实施例的CRC操作的指令集体系结构(ISA)的示例指令的列表。如表1所示,使用可以通过操作码引用的每个指令利用源寄存器和目的地寄存器来执行CRC32操作。如表所示,可以有不同的风格(flavor),每个指令用于对给定大小的目的地操作数和源操作数执行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操作的固有指令。
可以在许多不同的系统类型中实现实施例。现在参照图4,示出根据本发明的一个实施例的多处理器系统的框图。如图4所示,该多处理器系统是点对点互连系统,它包括经由点对点互连450耦合的第一处理器470和第二处理器480。如图4所示,每个处理器470和480都可以是包括第一和第二处理器核(即,处理器核474a和474b以及处理器核484a和484b)的多核处理器。尽管为了便于说明而没有示出,但根据本发明的一个实施例,第一处理器470和第二处理器480(以及更具体地说,包括其中的核)可以在它们的执行单元内包括XOR树逻辑以执行用户级CRC指令。第一处理器470还包括存储器控制器集线器(MCH)472及点对点(P-P)接口476和478。类似地,第二处理器480包括MCH 482及P-P接口486和488。如图4所示,MCH 472和482将处理器耦合到相应的存储器,即存储器432和存储器434。
第一处理器470和第二处理器480可以分别经由P-P互连452和454耦合到芯片集490。如图4所示,芯片集490包括P-P接口494和498。此外,芯片集490还包括用于将芯片集490与高性能图形引擎438耦合的接口492。在一个实施例中,点对点互连439可以耦合这些组件。接着,芯片集490可以经由接口496耦合到第一总线416。
如图4所示,各种输入/输出(I/O)设备414可以与总线桥418一起耦合到第一总线416,总线桥418将第一总线416耦合到第二总线420。I/O设备414可以包括至少一个能够在该多处理器系统与遵照任何适用协议的网络(图4中没有示出)之间提供互相通信的组件。在一个实施例中,I/O设备414可以包括可以处理待通过网络发送和/或接收的一个或多个网络协议单元的I/O子系统的数字和/或模拟硬件和/或软件的任意组合。在一个实施例中,I/O子系统可以包括例如网络接口卡(NIC),该NIC可以包括例如在联网协议的开放系统互连(OSI)模型中定义的数据链路层(DLL)的媒体接入控制(MAC)层。OSI模型是由位于瑞士1 rue de Varembé,Case postale 56 CH-1211 Geneva 20的国际标准化组织(ISO)定义的。
仍然参照图4,在一个实施例中,经由总线桥418耦合到第一总线416的第二总线420可以是低引脚计数(LPC)总线。各种设备可以耦合到第二总线420,包括例如键盘/鼠标422、通信设备426和数据存储单元428,在一个实施例中,数据存储单元428可以包括代码430。此外,音频I/O 424也可以耦合到第二总线420。注意,其它体系结构也是可以的。例如,取代图4中的点对点体系结构,系统可以实现多跳总线或其它这样的体系结构。
如上所述,在各个实施例中,图4中的多处理器系统可以耦合到网络,该网络可以是任何网络,如互联网、内联网、局域网(LAN)、存储区域网(SAN)、广域网(WAN)、城域网(MAN)或无线网络。该网络可以利用例如以太网标准(在IEEE 802.3协议及相关标准中有所描述)或任何其它通信标准来与I/O设备414交换业务,根据本发明的一个实施例,业务可以包括校验和。
注意,进入系统的数据可以具有例如网络协议单元或任意大小。当由系统接收时,该数据可以临时存储在缓冲器中,如任意大小的缓冲器中。为了对该数据有效地执行诸如CRC操作的校验和计算,实施例可以将数据划分成预定的区块(chunk)大小以用于有效的校验和操作。现在参照图5,示出根据本发明的一个实施例、用于为任意大小的缓冲器中的任意大小的数据块生成CRC值的方法的流程图。如图5所示,方法500可以从将CRC值初始化(方框505)开始。在一个实施例中,可以将CRC值存储在目的地寄存器中。尽管在各个实施例中,CRC值可以有不同的初始值,但在一个实施例中,初始CRC值可以对应于都为逻辑1,并且在一个实施例中,对于CRC32操作,初始CRC值可以对应于FFFFH,但本发明的范围不限于此。
仍然参照图5,接着,可以为缓冲器中的数据块确定各种长度。更具体地说,首先可以计算头部长度(HL)(方框510)。该HL可以对应于在出现CRC操作的宽版本的第一自然对准边界之前缓冲器中的初始数据量。例如,在用户级CRC指令采取不同格式的实现中,最宽版本可用于对64位操作数执行,此时第一自然对准边界可以对应于任意缓冲器中出现64位数据的自然对准边界处的第一位置。因此,在方框510中计算的HL可以对应于例如从缓冲器的起点(beginning)到64位数据的第一自然对准边界的字节数。该头部长度可以少于7个字节,其中指令的宽版本对应于64位。
接着,可以计算主体长度(BL)(方框515),该BL对应于从第一自然对准边界起直到不再执行CRC操作的任何额外的宽变型的缓冲器中的数据量。例如,关于64位宽的操作,主体长度因而可以在缓冲器的终点(end)的63位内的自然对准边界处终止。在方框515中计算完主体长度之后,控制转到方框520。在那里,可以计算尾部长度(TL)(方框520)。该尾部长度可以对应于从最后一个自然对准边界到缓冲器的终点的缓冲器中的剩余数据块。不同的实体可以执行以上操作。在一个实施例中,定序器可以执行对缓冲器的分析以生成各种长度,该定序器可以是软件实现的状态机,例如在图2和3中示出的定序器335。在完成缓冲器部分的不同长度的计算之后,可以将偏移量设为零(方框525)。在一个实施例中,零偏移量可以对应于缓冲器的起点。
仍然参照图5,接着,可以确定HL是否大于零(判定方框530)。如果大于零,则这意味着缓冲器的第一部分中仍然存在数据。因此,控制转到方框535。在那里,可以执行对应于用户级CRC指令的窄版本的CRC操作(方框535)。更具体地说,可以利用缓冲器偏移位置(即,在第一次迭代中对应于缓冲器的起点)处的源数据和目的地数据来执行CRC操作,其中目的地数据可以对应于目的地寄存器中的运行余数值(即,在第一次迭代中初始化后的CRC值)。尽管CRC操作可以用各种方式来实现,但在一个实现中,CRC操作可以在用于对窄数据(如单字节源数据)执行CRC操作的处理器管线的专用硬件中执行。
在完成CRC操作之后,控制转到方框540。在那里,可以将偏移量设置成等于当前的偏移量加上窄数据格式的大小、例如1个字节(方框540)。接着,可以将HL减1(方框545)。因此,这些操作将缓冲器推进到源数据的下一部分。然后,控制往后转到判定方框530,以确定头部长度是否仍然大于零(判定方框530)。如果是,则以循环方式执行方框535、540和545,直到缓冲器的第一部分中的源数据用完为止。当缓冲器的第一部分中的源数据用完(即,已经到达第一自然对准边界)时,判定方框530将确定HL不大于零,并且因此控制转到判定方框550。
在判定方框550,可以确定主体长度是否大于零。如果是,则将处理存在于缓冲器的第二部分中的宽格式(如64位)的数据。因此,控制转到方框555。在那里,可以执行对应于用户级CRC指令的宽版本的CRC操作(方框555)。更具体地说,可以利用当前的缓冲器偏移位置(即,在第一次迭代中对应于64位数据的第一自然对准边界)处的源数据和目的地数据来执行CRC操作,其中目的地数据可以对应于目的地寄存器中的当前运行余数值(即,在第一次迭代中完成窄格式执行之后存在的CRC值)。尽管CRC操作可以用各种方式来实现,但在一个实现中,CRC值可以在用于对宽数据(如8字节源数据)执行CRC操作的管线的专用硬件中执行。注意,在各个实施例中,该专用硬件可以不同于执行窄格式的硬件。在完成CRC操作之后,控制转到方框560。在那里,可以将偏移量设置成等于当前的偏移量加上宽数据格式的大小、例如8个字节(方框560)。接着,可以将BL减1(方框565)。
然后,控制往后转到判定方框550。当包括方框555、560和565的循环已经执行一次或多次而使得主体长度递减为零时,判定方框550确定不再留有任何额外的BL,并且因此控制转到判定方框570。在那里,可以确定尾部长度是否大于零(判定方框570)。如果大于零,则控制转到方框575。可以执行同样可以对应于用户级CRC指令的窄版本的CRC操作(方框575)。更具体地说,可以利用缓冲器偏移位置(即,在第一次迭代中对应于缓冲器的终点之前的宽数据的最后一个自然对准边界)处的源数据和目的地数据来执行CRC操作,其中目的地数据可以对应于目的地寄存器中的运行余数值(即,在第一次迭代中宽格式的CRC操作结束时的当前CRC值)。在一个实现中,CRC操作可以在用于对窄数据执行CRC操作的处理器管线的专用硬件中执行。在完成CRC操作之后,控制转到方框580。在那里,可以将偏移量设置成等于当前的偏移量加上窄数据格式的大小、例如1个字节(方框580)。接着,可以将TL减1(方框585)。
然后,控制往后转到判定方框570。当在判定方框570确定尾部长度不大于零时,这意味着缓冲器中不存在任何额外数据。因此,控制转到方框590。在那里,可以将CRC值提供给例如预定位置以根据特定应用程序的需要使用(方框590)。因此,该CRC值可以对应于缓冲器中的数据量的校验和。在一个实施例中,在执行方法500期间存储递增累积的CRC值的目的地寄存器可以提供该值用于所需用途。这些用途的实例可以是作为用于附加到待从系统传送的数据的计算的校验和或作为用于将和与输入数据一起接收的校验和进行比较的生成的校验和。或者,该校验和可以用作散列函数、生成的伪随机数字等。
在特定实施例中,方法500可以与两个不同的用户级指令(对应于窄格式和宽格式)配合使用以对不同的数据大小实现CRC操作。在一个实施例中,窄格式可以对应于单个字节,而宽格式则对应于8个字节,但本发明的范围不限于此。例如,在其它实施例中,缓冲器中的额外数据分段可以实现成对应于CRC操作的额外风格(如16位或32位区块)。在如图5所示的实施例中,利用方法500,可以执行CRC指令的窄版本直到第一自然对准边界以便有效使用CRC指令的宽格式。然后,宽格式可用于缓冲器中的数据主体,然后同样可以从缓冲器的最后一个自然对准边界开始对任何剩余数据执行指令的窄格式。尽管就图5中的这个特定实现进行了描述,但应了解,本发明的范围不限于此。
利用本发明的实施例,可以利用在时间上比纯基于软件的方法更有效的一个或多个CRC指令来执行例如数据验证。即,根据本发明的一个实施例,处理器可以执行比根据基于软件的方法少的周期来计算CRC值。利用这些CRC指令可以更具高速缓存效率,因为与基于软件的方法相比,这些指令可以占用更少的指令高速缓存空间,或者可以具有更小的指令高速缓存占用量。此外,无需查找表,便可以避免数据高速缓存污染影响。此外,通过利用更少的处理器周期来实现CRC操作减少了功率消耗。因此,一些实施例可以在通常在电池电源上运行的便携式或无线系统中实现,但本发明的范围在这方面不受限制。
现在参照图6,示出可以在其中使用本发明的实施例的网络配置的框图。如图6所示,网络系统600可以链接各种实体。具体来说,如图6所示,企业网络605可以经由城域网(MAN)640耦合到存储区域网(SAN)650。尽管用图6的实施例中的该特定实现示出,但应了解,本发明的范围不限于此。仍然参照图6,企业网络605可以包括各种组件,包括各个系统,如经由链路612耦合到交换机625的个人计算机(PC)610a和610b。企业网络605可以是基于以太网的企业网络,它还可以包括经由链路618同样耦合到交换机625的数据中心620,数据中心620可以包括一个或多个服务器615a和615b。在一个实施例中,链路612和618可以是以太网链路,如1千兆位字节以太网(GbE)链路,但其它这样的链路也是可以的。在一个实施例中,交换机625可以包括MAC、交换结构等。
接着,交换机625可以经由链路628耦合到多服务提供平台(MSPP)630,其中链路628也可以是以太网链路。在各个实施例中,MSPP 630可以包括不同的组件,包括例如收发器、复用器/解复用器、成帧器、MAC等。MSPP 630例如经由诸如光学载波(OC)-192级光学链路的光学链路耦合到MAN 640。
仍然参照图6,MAN 640可以经由链路645耦合到SAN 650。SAN650可以包括各种组件,包括例如适配器652、控制器654和多个存储设备656,这些存储设备656可以是独立冗余磁盘阵列(RAID)或其它这样的存储机构。适配器652能够根据各种协议与存储设备656通信,作为实例,这些协议如小型计算机系统接口(SCSI)、光纤通道(FC)和/或串行高级技术附件(S-ATA)。
为了确认通过网络系统600传递的数据的有效性,系统内的各个组件可以执行数据验证,如根据本发明的一个实施例的CRC计算。因此,例如,服务器615a和615b内的处理器、计算机610a和610b、及SAN 650的控制器654每个都可以适于根据诸如在本发明的实施例中所提供的用户级校验和指令来执行CRC操作。尽管用图6的实施例中的该特定实现进行了描述,但应了解,本发明的范围不限于此。
实施例可以用代码来实现,并且可以存储在存储介质上,该存储介质上存储有指令,这些指令可用于将系统编程以执行这些指令。存储介质可以包括但不限于:任何类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁-光盘;半导体设备,如只读存储器(ROM)、随机存取存储器(RAM)(如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁或光卡;或任何其它类型的适于存储电子指令的介质。
尽管关于有限数量的实施例描述了本发明,但本领域的技术人员将由此明白众多修改和改变。随附权利要求要覆盖所有这些落在本发明的精神和范围内的修改和改变。
Claims (18)
1.一种方法,包括:
根据缓冲器中的数据块确定所述缓冲器的第一部分中的第一操作数的数量和所述缓冲器的第二部分中的第二操作数的数量;
对所述第一操作数迭代地执行循环冗余校验和(CRC)操作,其中所述第一操作数具有第一长度;以及
对所述第二操作数迭代地执行所述CRC操作,其中所述第二操作数具有第二长度,所述第二长度大于所述第一长度。
2.如权利要求1所述的方法,还包括:响应所述CRC操作的第一用户级指令而对所述第一操作数执行所述CRC操作,所述第一用户级指令对应于所述第一长度。
3.如权利要求2所述的方法,还包括:响应所述CRC操作的第二用户级指令而对所述第二操作数执行所述CRC操作,所述第二用户级指令对应于所述第二长度。
4.如权利要求1所述的方法,还包括:在通用处理器的硬件引擎的第一块中对所述第一操作数执行所述CRC操作,以及在所述硬件引擎的第二块中对所述第二操作数执行所述CRC操作。
5.如权利要求1所述的方法,还包括:根据所述数据块确定所述缓冲器的第三部分中的第三操作数的数量,其中所述第三操作数具有所述第一长度。
6.如权利要求5所述的方法,还包括:响应所述CRC操作的第一用户级指令而对所述第三操作数迭代地执行所述CRC操作,所述第一用户级指令对应于所述第一长度。
7.一种系统,包括:
第一部件,用于根据第一宽度的源数据的第一校验和指令来对缓冲器部件中的数据执行校验和操作直到到达第二宽度的源数据的自然对准边界为止;以及
第二部件,用于根据所述第二宽度的源数据的第二校验和指令来对所述缓冲器部件中的数据执行所述校验和操作。
8.如权利要求7所述的系统,还包括:用于确定对应于所述缓冲器部件中的第一部分数据的头部长度的部件,所述第一部分从所述缓冲器部件的起点延伸到所述自然对准边界。
9.如权利要求8所述的系统,其中所述用于确定对应于所述缓冲器部件中的第一部分数据的头部长度的部件还用于确定对应于所述缓冲器部件中的第二部分数据的主体长度,所述第二部分从所述自然对准边界开始。
10.如权利要求9所述的系统,其中所述用于对缓冲器部件中的数据执行校验和操作的第一部件包括处理器的执行单元中用于迭代地执行所述第一校验和指令的第一逻辑块。
11.如权利要求10所述的系统,其中所述用于对所述缓冲器部件中的数据执行所述校验和操作的第二部件包括所述处理器的所述执行单元中用于迭代地执行所述第二校验和指令的第二逻辑块。
12.如权利要求10所述的系统,还包括:用于存储所述校验和操作的运行余数的部件,其中所述用于存储所述校验和操作的运行余数的部件用于向所述第一逻辑块提供目的地寄存器的内容的至少一部分和所述第一宽度的源数据。
13.一种装置,包括:
用于将存储在缓冲器中的任意大小的数据块分成至少第一部分和第二部分的定序器,所述第一部分包括第一宽度的源数据,所述第二部分包括第二宽度的源数据;以及
耦合到所述缓冲器的执行单元,用于对所述第一宽度的源数据和来自目的地位置的余数值顺序执行循环冗余校验(CRC)操作并对所述第二宽度的源数据和来自所述目的地位置的所述余数值执行所述CRC操作,并向所述目的地位置提供对应于所述余数值的所述执行单元的输出的至少一部分。
14.如权利要求13所述的装置,其中所述执行单元用于响应第一用户级指令而对所述第一宽度的源数据执行所述CRC操作,并响应第二用户级指令而对所述第二宽度的源数据执行所述CRC操作。
15.如权利要求14所述的装置,其中所述执行单元包括用于响应所述第一用户级指令而执行所述CRC操作的第一异或(XOR)树逻辑和用于响应所述第二用户级指令而执行所述CRC操作的第二XOR树逻辑,其中所述执行单元位于通用处理器中。
16.如权利要求13所述的装置,还包括:
耦合在所述缓冲器与所述执行单元之间的第一寄存器,用于从所述缓冲器接收所述第一宽度的源数据和所述第二宽度的源数据;以及
耦合到所述执行单元的第二寄存器,用于从所述执行单元接收所述余数值并向所述执行单元提供所述余数值,其中所述第二寄存器对应于所述目的地位置。
17.如权利要求13所述的装置,其中所述第一部分从所述缓冲器的起点延伸到所述第二宽度的源数据的第一自然对准边界。
18.如权利要求17所述的装置,其中所述定序器用于将所述数据块分成包括所述第一宽度的源数据的第三部分,其中所述第三部分从所述第二宽度的源数据的最后一个自然对准边界延伸到所述缓冲器的终点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/384,527 | 2006-03-20 | ||
US11/384,527 US7925957B2 (en) | 2006-03-20 | 2006-03-20 | Validating data using processor instructions |
PCT/US2007/063946 WO2007109466A1 (en) | 2006-03-20 | 2007-03-14 | Validating data using processor instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101405699A true CN101405699A (zh) | 2009-04-08 |
CN101405699B CN101405699B (zh) | 2011-11-16 |
Family
ID=38522766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800098440A Expired - Fee Related CN101405699B (zh) | 2006-03-20 | 2007-03-14 | 利用处理器指令验证数据 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7925957B2 (zh) |
EP (1) | EP1997006B1 (zh) |
CN (1) | CN101405699B (zh) |
AT (1) | ATE516540T1 (zh) |
WO (1) | WO2007109466A1 (zh) |
Families Citing this family (13)
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 |
US7739663B2 (en) * | 2006-05-16 | 2010-06-15 | International Business Machines Corporation | Method, system and program product for validating a runtime environment |
JP2010218237A (ja) * | 2009-03-17 | 2010-09-30 | Renesas Electronics Corp | プログラム検証装置及びその方法 |
US8464125B2 (en) | 2009-12-10 | 2013-06-11 | Intel Corporation | Instruction-set architecture for programmable cyclic redundancy check (CRC) computations |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9154161B1 (en) * | 2014-04-01 | 2015-10-06 | Cisco Technology, Inc. | Calculating cyclic redundancy checks over overlapping windows of streaming data |
US9477562B1 (en) | 2015-04-23 | 2016-10-25 | Microsemi Storage Solutions (Us), Inc. | Apparatus and method for minimizing exclusive-OR (XOR) computation time |
US20230224079A1 (en) * | 2022-01-07 | 2023-07-13 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for measuring data integrity in time sensitive networks |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4438512A (en) | 1981-09-08 | 1984-03-20 | International Business Machines Corporation | Method and apparatus for verifying storage apparatus addressing |
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 |
EP0609595B1 (en) | 1993-02-05 | 1998-08-12 | Hewlett-Packard Company | Method and apparatus for verifying CRC codes by combination of partial CRC codes |
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 |
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 |
US5974574A (en) | 1997-09-30 | 1999-10-26 | Tandem Computers Incorporated | Method of comparing replicated databases using checksum information |
US6263443B1 (en) * | 1997-10-11 | 2001-07-17 | Agere Systems Guardian Corp. | Simplified data link protocol processor |
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 |
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 |
US6964008B1 (en) * | 1999-11-12 | 2005-11-08 | Maxtor Corporation | Data checksum method and apparatus |
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 | 엘지전자 주식회사 | 가전기기 네트워크 제어시스템 |
EP1483739A2 (en) | 2001-09-27 | 2004-12-08 | BRITISH TELECOMMUNICATIONS public limited company | Method and apparatus for data analysis |
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 |
JP4406604B2 (ja) | 2002-06-11 | 2010-02-03 | アシシュ エイ パンドヤ | Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ |
US6957321B2 (en) | 2002-06-19 | 2005-10-18 | Intel Corporation | Instruction set extension using operand bearing NOP instructions |
US7036007B2 (en) | 2002-09-09 | 2006-04-25 | Intel Corporation | Firmware architecture supporting safe updates and multiple processor types |
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 |
US7392399B2 (en) | 2003-05-05 | 2008-06-24 | Sun Microsystems, Inc. | Methods and systems for efficiently integrating a cryptographic co-processor |
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 |
CN1306772C (zh) * | 2004-04-19 | 2007-03-21 | 中兴通讯股份有限公司 | 一种短包数据的接入方法 |
US7594124B2 (en) | 2004-06-09 | 2009-09-22 | Intel Corporation | Cross validation of data using multiple subsystems |
US7454667B2 (en) | 2005-04-26 | 2008-11-18 | Intel Corporation | Techniques to provide information validation and transfer |
US7324913B2 (en) * | 2006-02-01 | 2008-01-29 | International Business Machines Corporation | Methods and apparatus for testing a link between chips |
-
2006
- 2006-03-20 US US11/384,527 patent/US7925957B2/en not_active Expired - Fee Related
-
2007
- 2007-03-14 AT AT07758495T patent/ATE516540T1/de not_active IP Right Cessation
- 2007-03-14 EP EP07758495A patent/EP1997006B1/en not_active Not-in-force
- 2007-03-14 WO PCT/US2007/063946 patent/WO2007109466A1/en active Application Filing
- 2007-03-14 CN CN2007800098440A patent/CN101405699B/zh not_active Expired - Fee Related
-
2011
- 2011-02-25 US US13/034,993 patent/US8156401B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP1997006A1 (en) | 2008-12-03 |
CN101405699B (zh) | 2011-11-16 |
ATE516540T1 (de) | 2011-07-15 |
US8156401B2 (en) | 2012-04-10 |
EP1997006A4 (en) | 2010-06-02 |
WO2007109466A1 (en) | 2007-09-27 |
US20110145679A1 (en) | 2011-06-16 |
US7925957B2 (en) | 2011-04-12 |
EP1997006B1 (en) | 2011-07-13 |
US20070226580A1 (en) | 2007-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101405699B (zh) | 利用处理器指令验证数据 | |
US11899530B2 (en) | Performing a cyclic redundancy checksum operation responsive to a user-level instruction | |
US10365965B2 (en) | High performance interconnect link layer | |
CN107968756B (zh) | 高性能互连链路层 | |
JP2023111888A (ja) | エンドツーエンドのデータ保護を提供するシステムおよび方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111116 Termination date: 20210314 |