当前位置: 首页 > 专利查询>英特尔公司专利>正文

确定消息余式制造技术

技术编号:5393984 阅读:216 留言:0更新日期:2012-04-11 18:40
确定消息余式的技术包括访问消息和同时确定该消息的各个不同段关于多项式的模余数的集合。该技术还包括基于模余数的集合和在访问消息之前确定的常量的集合确定该消息关于多项式的模余数。该消息关于多项式的模余数存储在存储器中。

【技术实现步骤摘要】
【国外来华专利技术】确定消息余式
技术介绍
多种计算机应用对消息操作以产生消息余式(message residue)。该余式可以更 加紧凑地表示消息内容。在其他用途中,消息余式常常用于确定在网络连接上传输的或从存储装置检索的数据是否已经损坏。例如,有噪声的传输线可改变"i"信号为"o",或反之亦然。为了探测损坏,消息经常伴随有它的消息余式。数据的接收器然后可以独立地确定 该消息的余式并且将所确定的余式与接收到的余式进行比较。 常见的消息余式称为循环冗余校验(CRC) 。 CRC计算是基于解释消息位流为多项 式的系数。例如,消息"1010"对应于多项式(lx3) + (0x2) + (l ) + (0x",或更简单为x3+x1。该 消息多项式除以已知是模的另一个多项式。例如,另一个多项式可是"ll"或x+l。 CRC是消 息除以多项式的余数。然而,CRC多项式除法与普通除法有所不同,因为它在有限域GF(2) (即,整数模2 (integers modulc)2)的集合)上计算。更简单地说偶数项系数变为零而奇 数项系数变为一。附图说明 图1是图示消息余式的确定的图。 图2是图示确定消息余式的操作的图。 图3是图示可以在确定消息余式中使用的查表法的图。具体实施例方式确定消息的余式经常出现在各种应用中。该计算在处理消息中(例如用于传输或 在接收后)常常表现可观的开销。下面描述了可以通过允许同时处理消息的不同部分而加 速该计算的技术。 为了说明,图1描绘长度为3N个位的消息M IOO的CRC计算。该消息M的位表示 多项式M(x)的系数。如上文描述的,CRC是消息M(x)关于多项式P(x)模("poly")的模 余数(modular remainder): CRC M(x) = M(x)mod P(x) 其中P(x)是由位串表示的另一个多项式。实际上,P(x)根据不同的应用来定 义。例如,iSCSI(互联网小型计算机系统接口 )使用CRC用于端到端的数据保护,它使用 11EDC6F41Hw的值作为多项式P(x)。其他应用已经选择不同的多项式大小和值。对于典型 的k位CRC余式,P(x)将是k位的多项式(例如,32位)并且M将是移位k位的消息m(x)。 k位CRC值典型地存储在M(x)的空置、最低有效k位中。CRC值反映消息M中的每个位的值和位置。然而,如在图1中示出的,CRC值可通 过独立地处理消息的段并且随后以某种方式合并结果来并行计算以保存合适的CRC计算。 更确切地说,M(x)的CRC的可分解成消息的不同段(A、B、C)的CRC计算。例如 CRC M(x) = (CRC(C) *K2) + (CRC(B) Kl) + (CRC (A)) 其中"+ "表示多项式加法(例如,逐位X0R)而" "表示多项式乘法(例如,位 串mod P(x)的无进位乘法)。CRC(C)、 CRC(B)和CRC(A)的值可以独立并且同时计算以加 速整体CRC值的计算。每段的CRC值然后可以通过多项式乘法(例如,乘以常量K)组合成 消息M的整体CRC值。例如,在图1中示出的示例中,其特征是大小为N位的均匀段,K2 = x2Nmod poly和Kl = xVod poly,其中x2N和xN对应于消息内的段的有效位。由于x2N和xN 是常量,并且模多项式poly是恒定的,因此K2和Kl的值也是常量,其在可以甚至在访问消 息M的值之前预先计算。S卩,常量K的值取决于分段点和已知的poly值,而不是消息M的 位值。换句话说,对给定多项式确定的给定常量的集合可以用于不同的消息。常量的集合 可预先计算并且提供在实践中使用的不同多项式。该常量的值可以使用CRC运算确定。例 如在上文的示例中,K2对于指定的多项式可以按CRC(x2N)计算。 尽管图1描绘三段,其他实现可使用不同的分段方案,其使用不同数量的段,非均 匀大小的段,等等。另外,尽管这些常量的值可预先计算,它们也可与段CRC值同时计算(例 如,在第一消息初步处理期间或者较低效率地是每个已处理的消息的初步处理期间)。 该方案的潜在优势是可以在不同的环境和实现中量化。例如,处理器特征可以是 专用CRC指令(例如,CRC或其他消息余式处理器宏运算)。这样的指令可具有语法 CRC (i即ut-bit-string, message-residue) 其中输入位串(例如,64、32、16、8或其他指定的或硬连接字符串长度),可以表示 消息的一部分。可选地,指令或伴生指令可指定多项式或位串宽度。该指令可以更新CRC 消息余式值以反映新输入位串的递增贡献。使用这样的指令,计算消息M的CRC可以使用 一系列对CRC指令的调用而累积地完成,其消耗消息的输入位串大小的字节片(chunk),其 中每次调用CRC指令递增式更新CRC值。在所有数据字节片被消耗后,剩余的消息余式反 映整体的消息CRC值。 这样的指令可以通过以下处理器微运算实现,其实现32位CRC运算TEMPI — BIT—REFLECT64(SRC)TEMP2 — BIT_REFLECT32(DEST)TEMP3 — TEMPI << 32 TEMP4 — TEMP2 << 64TEMP5 — TEMP3X0R TEMP4TEMP6 — TEMP5MODULO P0LYDEST — BIT_REFLECT(TEMP6) DEST — 00000000H 其中如果必要的话,BIT_REFLECT改变字符串的端法(endian)表示。 在上文描述的确定CRC值的示例实现中,每个CRC指令要求之前的CRC指令的输出作为输入。然而,这种连续式方法消耗许多处理器周期,其至少是T*L,其中T是CRC指令周期延迟而L是字节片的数量。相反地,并行计算这些段导致大约(T礼/NumSegments)加上重组运算延迟(其相比之下是相对较小)的延迟。 一般,后面的方法将表示用于确定CRC的时间的大大减少。 图2图示使用处理器提供的CRC指令的样本实现。在描绘的示例中,特定的CRC 指令需3周期来完成。时序示处理器实现多指令执行流水线。 如示出的,CRC指令在每段的子段(例如,A、B和C,其中i = 1至3)上 连续运算。每段的余式存储在递增式更新的余式变量中。例如,对段C的每个子段字节片 (例如,C、 C、 C)更新余式值X。余式值可初始化为适合给定应用程序的值(例 如,对于iSCSI全部是1)。 由于流水线架构和CRC指令的延迟,在给定段的字节片上的运算与在其他段的字 节片上的运算进行交织。例如,如图示的,段A、B和C的相同位置字节片(例如,A、B 和C)按顺序插入104a-104c流水线。 一旦给定字节片的段余式已被更新,该段的下一 个字节片可以处理。例如,在字节片C的CRC指令104a完成后,CRC指令104d可以处 理字节片C。 CRC指令之间图示的重叠表示归因于上文描述的技术的整体延迟减少。 如示出的,在确定X、Y和Z后,重组106继续下去。可以是,重组106可以重叠CRC 计算。例如,当X值确定就开始确定X K2,而不等待Y和Z的值。可以是,X、 Y和Z的消 息余式值可存储在消息本身中(例如,X的值可以存储在C中,Y在B本文档来自技高网...

【技术保护点】
一种计算机实现的方法,包括:访问消息;同时确定所述消息的各个不同段关于多项式的模余数的集合;基于所述模余数的集合和在访问所述消息之前确定的常量的集合来确定所述消息关于所述多项式的模余数;以及存储所述消息关于所述多项式的所述模余数。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:S格伦V戈帕尔WK费哈利G沃尔里奇
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1