用于生成循环余数核对代码以及生成其他基于余数的编码的方法、设备和产品的制作方法

文档序号:7515918阅读:256来源:国知局
专利名称:用于生成循环余数核对代码以及生成其他基于余数的编码的方法、设备和产品的制作方法
优先权要求根据35USC的119(e)款规定,本申请享受于2000年2月17日提出的60/183号临时申请的优先权,该临时申请的标题为“快速生成循环余数核对代码组的方法和设备”。
相关的技术信息系统经常暴露在噪音和/或其他环境下,这可能会导致数据出现错误。在数据的传递、存储和/或读取等各种各样的过程中,可能会出现数据错误。当然,数据错误并不只限于发生在上述过程中。因此,人们开发了各种方法来对出现的数据错误进行监测和纠正。
众所周知,信号可以由数据所代表(如信息、单词、二进位组等),数据被认为是一组数字或数字的有序排列(如二进制数据被看作是二进制数字)。这样的数字除以一个除数(如一个二进制数),这样可以得到一个余数,这一余数可以做为一种标记并用来检测数据中的错误。举例而言,假设要传递的数据代表82这一数值,数据先除以预定好的除数,比如说是7,这样得到的余数为5,这一余数可以被做为一种标记并随数据一起传递。这样,如果收到的数据是81而不是82,则接收方使用相同的预定除数来处理数据,所得到的余数是4而不是5,因此表明所收到的数据有错误。
有些系统使用循环余数核对代码检测错误;循环余数核对代码也被认为是一种标记。例如,在某些通讯系统中,传送方有一组数据要传递,传送方生成了这组数据的循环余数核对代码,并将相关的循环余数核对代码做为附加的“核对要点”与这组数据一同发送出去。发送出的数据和相关的循环余数核对代码到达接收方,接收方也生成所收到数据的循环余数核对代码,并将所生成的循环余数核对代码与所收到的循环余数核对代码进行比较,以确定所收到的数据中是否存在错误。至少有些数据可被看作是代表一种多项式(例如,数据可被看作是代表多项式中哑元参数“X”的系数),这一多项式以除以第二个多项式,这样可以得到一个余数项。认识到这一点至少可以在一定程度上理解某些循环余数核对代码,第二个多项式通常被认为是循环余数核对多项式,循环余数核对多项式是发送方和接收方共知的,并被用于一定的目的,这些已被相关文献所充分证明。循环余数核对代码以余数为基本或者说至少部分地以余数为基本。通过仔细选择循环余数核对多项式,任何造成接收方所得到的余数与发送方所生成的余数不一致的的单字节错误都可以检测得到。
因此,应该理解的是,虽然下文中偶尔提到多项式,但实际上是指处理数据,并且将数据看成多项式或多项式中的项,这样做的目的只是为了使说明更简便。
举例而言,

图1A表明的是二元数据组D1,它由二进制的数列“1101011011”。最左边的二进制数字是MSB,最右边的二进制数是LSB。这一数列被看作是多项式中变量“X”幂次的系数a9……a0(a9X9+a8X8+a7X7+a6X6+a5X5+a4X4+a3X3+a2X2+a1X1+a0X0),因此可以得到下列式子1X9+1X8+0X7+1X6+0X5+1X4+1X3+0X2+1X1+1X0(既简化成X9+X8+X6+X5+X3+X+1)。LSB“1”代表X0项的系数。第二个LSB“1”代表X1项的系数,第三个LSB“1”代表X2项的系数,以此类推,MSB“1”代表X9项的系数。注意由于这一数列是由二进制数字组成的,所以所有的系数不是“1”就是“0”。在此后的本文中,当我们指定二进制数字代表某一多项式时,我们是指二进制的数字代表多项式的系数,多项式包括系数为0的项或系数为非零的项。
图1B表明的是由“10011”这一数列组成的二进制数字串,它被看作是代表某一多项式,该多项式组成如下X4+X+1。在这一例子中,该多项式用做为循环余数核对多项式。根据幂次最高的项,既X4我们可以得到该循环余数核对多项式的幂次为4。
在这一例子中,数据D1所代表的多项式除以循环余数核对多项式,以得到余项。现参见图1C,出于这一例子的考虑,首先在数据块D1的LSB后面附上二进制数字D2“0”,这样余数项将有一种特定的格式。所附加的二进制数字的数量被选为4,与循环余数核对多项式的幂次相等。因此,数据块和所附加上的二进制数字共同组成了数列“11010110110000”。这一数列可被看成代表X13+X12+X10+X8+X7+X5+X4这一多项式。
图2A表明的是二进制数列D3“11010110110000”,它由数据块所附加上的二进制数字组成(图1C),它除以“10011”这一二进制数列D4,这一数列在图1B中表明,它代表循环余数核对多项式。可以看出,每一步的结果都取决于上一步的结果。在数列D3中,任何二进制数字位置出现的错误都会导致余数项D5与所预计的余数项不同。在这一例子中,数列“1110”代表余数项,它被认为代表多项式X3+X2+X。
应该认识到,计算余数项所用的减法步骤通常不是按普通的二进制减法进行的,而是用二元算法或二元减法进行的。多项式的加减法是从几何阈理论发展出来的。更具体而言,如果数据是二进制的,并多项式带有二进制的系数,则算法在二元加罗瓦域内进行。
图2B表明的是在二进制数据二元加罗瓦域内的代数规则。注意在50处的代数加法规则中没有“累加进位”,在52处的代数减法规则中也没有“借位”。因此,代数加法规则和代数减法规则分别与二元算法和二元减法相类似,有时使用“异一或”函数来完成这些计算。在54处的代数乘法规则有时使用“与”函数来完成。
虽然上述的讨论和实例有助于理解循环余数核对代码,但应该理解的是,系统可以在没有任何表达式涉及多项式除法的情况下使用循环余数核对代码。实际上,可以用各种方式实施循环余数核对方法,包括使用线性反馈移位寄存器、查寻表和/或这二者的组合来实施循环余数核对方法,但实施方式并不局限于此。
图2C和图2D表明的是线性反馈移位寄存器的应用实例。图2C表明的是一种以前类型的线性反馈移位寄存器60,这种以前的方法有时被称为后端加载线性反馈移位寄存器。这种特殊的后端加载线性反馈移位寄存器60含有十六字节移位寄存器62,该寄存器被称为循环余数核对寄存器,后端加载线性反馈移位寄存器60还包括3个“X或”门64、66、68,这3个“X或”门在操作上与循环余数核对寄存器相连,可以使线性反馈移位寄存器60生成基于下列循环余数核对多项式的数据所用的循环余数核对代码X16+X15+X2+0。
循环余数核对寄存器的第十六个二进制数字的输出70,既MSB被作为“X或”门64、66、68的第一项输入。“X或”门64的第二项输入,在第72行接收数据组D。接收从数据D的MSB开始,每次一个二进制数字,接收过程如下面进一步所述。“X或”门64的输出位于第74行,该输出作为循环余数核对寄存器62的LSB输入,既第一个二进制数字76的输入。“X或”门66也有第二项输入,在第80行接收循环余数核对寄存器62第二个二位制数字78的输出。“X或”门68也有第二项输入,在第88行接收循环余数核对寄存器62第十五个二进制数字86的输出。“X或”门68的输出位于第90行,作为循环余数核对寄存器62MSBH70的输入。
图2C中的线性反馈移位寄存器通常在硬件中提供,并由时钟驱动。像上面讨论过的图1C中的例子一样,通常给数据组D附加一些二进制数字,这样余数项会有一种特殊的格式。
在操作时,在使用之前,循环余数核对寄存器62经常被初始化(如循环余数核对寄存器的每个二进制数字的逻辑状态都被置于“0”)。数据组D需要进行循环余数核对,在第一个时钟脉冲时,数据组D的MSB经“X或”门64被提供给循环余数核对寄存器62的LSB76;在以后的每次时钟脉冲时,循环余数核对寄存器便向左移动一个二进制数字,数据组D的下一个头位的MSB经“X或”门64被提供给循环余数核对寄存器62的LSB76。如果循环余数核对寄存器62的MSB70的逻辑状态处于“1”,则循环余数核对寄存器62中由“X或”门64、66、68所提供的二进制数字在逻辑状态处于“1”下被进行“X或”处理。如果循环余数核对寄存器附带的最后一个二进制数字进入到了循环余数核对寄存器62中,则循环余数核对寄存器62中的内容代表数据组D的余数项。
图2D表明的是以前的线性反馈移位寄存器100,这种类型的线性反馈移位寄存器有时被称为前端加载线性反馈移位寄存器。在使用图2D中的前端加载线性反馈移位寄存器时,通常不必对数据组D附加二进制数字。正如像图2C中的线性反馈移位寄存器60一样,这种前端加载的线性反馈移位寄存器100带有十六字节循环余数核对寄存器102以及3个“X或”门104、106、108.这3个“X或”门在操作时与循环余数核对寄存器102相连,可以使线性反馈移位寄存器100根据下列循环余数核对多项式生成数据D的循环余数核对代码X16+X15+X2+0。
“X或”门104、106、108与循环余数核对寄存器102相连。数据D按下述方式提供给线性反馈移位寄存器100。第十六个二进制数字的输出110;既循环余数核对寄存器102的MSB位于第112行,作为“X或”门104的第一项输入。“X或”门104有第二项输入,第二项输入在第114行接收数据组D,每次一个二进制数字,接收过程如下面进一步所述。“X或”门104的输出位于第116行,作为另二个“X或”门106、108中每一个门的输入。“X或”门106有第二项输入,第二项输入在第120行接收循环余数核对寄存器102的第二个二进制数字118的输出。“X或”门106的输出位于第122行,作为循环余数核对寄存器102第三个二进制数字124的输入。“X或”门108也有第二项输入,它在第128行接收循环余数核对寄存器102第十五个二进制数字126的输出。“X或”门108的输出位于第130行,做为循环余数核对寄存器102MSB110的输入。
在第一个时钟脉冲时,数据组D的MSB和循环余数核对寄存器102的MSB110的输出被提供给“X或”门104。在此后的每次时钟脉冲时,循环余数核对寄存器102中的数据都向左移动一个二进制数字,并且数据组D中的下一个排在首位的MSB被提供给“X或”门104。如果“X或”门104输出的逻辑状态为“1”,则循环余数核对寄存器中由“X或”门106、108所提供的二进制数字在逻辑状态“1”下被“X或”处理。如果数据组D的最后一个二进制数字被提供给了“X或”门104,则循环余数核对寄存器102中的内容代表数据组D的余数项。
图2E表明的是程序140的功能模块图,程序140是一种以前的、由表格驱动的程序;它用来生成循环余数核对代码。这种特殊的由表格驱动的程序140使用16字节移位寄存器142做为循环余数核对寄存器,它有时被认为是后端加载的寄存器,与图2C中的线性反馈移位寄存器相同。查寻表144被用来储存许多值,如256个16字节的数值。正如上述图1C所讨论的例子,在这里也通常给数据组D附加一些二进制数字,这样余数项就会有一种特殊的格式。在操作时,二进制数字以数组的方式(如以每组8个字节的方式)移入或移出循环余数核对寄存器142。数据组D的字节组在第145行进入循环余数核对寄存142。循环余数核对寄存器142输出的字节组在第146行被提供给查寻表144,并被用来确定查寻表144中的某一位置。查寻表中确切位置上的16节字数值输出到第148行上,这一数值是循环余数核对寄存器142的“X或”化的数值150,其结果储存在循环余数核对寄存器142中。操作将重复进行,直至所有附加在数据组D上的二进制数字都移入到了循环余数核对寄存器142之中。此时,循环余数核对寄存器142中的内容代表的是数据D的余数项。
图2F表示的是另一种以前所用技术的功能模块图,这种技术是由表格驱动的程序160,它用于生成循环余数核对代码。这种特殊的由表格驱动的程序160使用16字节移位寄存器162做为循环余数核对寄存器,它有时被认为是前端加载的寄存器,与图2D中的线性反馈移位寄存器相同。查寻表164被用来储存许多值,如256个16字节的数值。在操作时,字节组,如8个字节组移出循环余数核对寄存器162,这些字节组位于第166行上。“X或”化的字节组168,如8个字节的字节组从数据D移入到循环余数核对寄存器162上,数据D需要生成循环余数核对代码。“X或”操作的结果提供在第170行上,并被用来确定查寻表164的某一位置。在查寻表中确切位置上的数据,如16字节的数值提供在第172行上,这一数据是16字节循环余数核对寄存器162的“X或”化数据174,结果储存在循环余数核对寄存器162中。操作将重复进行,直至数据组D中的所有二进制数字都提供给了“X或”168,此时循环余数核对寄存器162中的内容代表的是数据D的余数项。
图2G是流程图180,这是一种以前使用的算法,它被用来执行表格驱动的程序。在步骤182,循环余数核对寄存器被初始化,所有二进制数字的逻辑状态被置为“0”。在步骤184,一组二进制数字移出循环余数核对寄存器,并且有一组二进制数字从数据组D移入循环余数核对寄存器,数据D需要生成循环余数核对代码。寄存器中被称为表格系数的数值被定为等于当一组二进制数字移出循环余数核对寄存器时,对从数据组D移入的二进制数字组进行“X或”操作的结果。在步骤186,表格系数寄存器的数值确定查寻表中的某一位置,使用该位置上的数值对循环余数核对寄存器进行“X或”处理,循环余数核对寄存器被定为与这一处理的结果相等。在步骤188,要决定是否有任何更多的二进制数字要从数据D移入到循环余数核对寄存器中。如果有更多的二进制数字要移入,则执行过程返回到步骤184。如果没有更多的二进制数字要移入,则算法结束运行,循环余数核对寄存器中的内容代表数据D的余数项。
图2H是流程图190,这是另一种以前所用的算法,它用于执行表格驱动的程序。图2H中的算法与图2G中的算法相类。不同之处在于图2H中的算法的使用涉及到某一处理器,该处理器含有管网式结构;在这种结构中,在前一项指令完成之前,可开始进行另一项指令。循环余数核对寄存器在步骤192被初始化,将所有的二进制数字的逻辑状态置为“0”。在步骤194,一组二进制数字移出循环余数核对寄存器,并有一组二进制数字从数据D移入循环余数核对寄存器,数据D需要生成循环余数核对代码。寄存器中被称为表格系数的数值被定为等于当一组二进制数字移出循环余数核对寄存器时,对从数据组D移入的二进制数字组进行“X或”操作的结果。等待步骤196提供一个延迟,以确保在执行算法的后续步骤198之前,前一步骤194执行完毕。在步骤198,表格系数寄存器的数值确定查寻表中的某一位置,使用该位置上的数值对循环余数核对寄存器进行“X或”处理,循环余数核对寄存器被定为与这一处理的结果相等。等待步骤196是必要的,因为步骤198需要步骤194的结果;然而,正如上面所述的,管网式结构可以在前一项指令完成之前开始执行另一项指令。另一个等待步骤200提供了一个延迟,以确保在执行算法的后续步骤之前步骤198执行完毕。在步骤202,要决定是否有任何更多的二进制数字要从数据D移入到循环余数核对寄存器中。如果有更多的二进制数字要移入,则执行过程返回到步骤194。如果没有更多的二进制数字要移入,则算法结束运行,循环余数核对寄存器中的内容代表数据D的余数项。等待步骤200是必要的,因为步骤194需要步骤198的结果。等待步骤200持续的时间通常要比等待步骤196的持续时间长,因为完成步骤198所需的时间通常比完成步骤194所需的时间长。
由于存在等待步骤196、200,这一算法不能充分利用管网式结构来计算循环余数核对。然而,应该理解的是,在等待步骤196、200持续期间,管网式结构处理器可以执行其他运算,这些运算与循环余数核对的计算没有关系。
在某些通讯系统中,例如在使用包转换的系统中,数据包的某些部分在接收或生成时出现错误码。如果这些系统使用循环余数核对代码来检测错误,这些系统常会处于闲置状态,直至所有的数据部分接收或生成完毕。然后才能生成这组数据的循环余数核对代码并对该循环余数核对代码进行评价。在这样的系统中,人们希望随着部分数据组的接收及生成就可以开始生成循环余数核对代码;这样的话,到最后一部分数据接收或生成完毕时,生成循环余数核对代码的时间就会缩短。同时还希望在数据接收及生成的大部分时间内扩大运算的工作量。
Ng等人建议同时实现生成数据集中区的循环余数核对代码,该数据集中区以异步传输模式来携带路游信息(参见澳大利亚悉尼新南威尔士大学电气工程学院的题为“异步传输模式单元集中区循环余数核对的同步实现”的文章)。然而,这种实现方式在某种程度上与查寻表方法相似,它不能克服本文上述提到的缺陷。
根据本发明的第一方面,数据处理器所执行的方法包括生成多个基本循环余数核对代码;基本循环余数核对代码至少基于指定的数据,以及至少根据这些基本循环余数核对代码来合成指定数据的循环余数核对代码。
根据某一实施方案,生成多个基本循环余数核对代码的过程包括将所指定的数据至少分成两部分,并生成至少两套基本循环余数核对代码,每套基本循环余数核对代码至少与两部分数据中的一个相对应。
根据本发明的另一方面,数据处理器包括生成与指定数据相对应的多个基本循环余数核对代码的装置,以及至少根据多个基本循环余数核对代码合成指定数据的循环余数核对代码的装置。
在此后的本文中,当遇到“根据”这一用语时,我们是指“至少根据”这一词义,这样做的目的是不排除以多个事物为根据的情况。
根据本发明的另一方面,数据处理器生成多个与指定数据相对应的基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
根据本发明的另一方面,信息系统至少包括一个数据处理器,该处理器生成与指定数据某些部分相对应的多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
根据本发明的另一方面,某一产品包括计算机可读介质以及储存在计算机可读介质中的信息,这些介质和信息可使计算机执行生成指定数据的循环余数核对代码的方法。该方法包括生成与指定数据相对应的多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
根据本发明的另一方面,通讯信号包括某些信息,这些信息能使计算机执行生成指定数据循环余数核对代码的方法。这一方法包括生成与指定数据相对应的多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
本发明一个或多个方面的一种或多种实施方案可用来降低生成循环余数核对代码所需的时间,并由此改善使用循环余数核对代码进行错误检测的系统的性能。举例而言,某些通讯系统使用某种通讯协议,发送方在发送第一组数据后不再发送第二组数据,直至接收方发回一个反馈信号,表明第一组数据已经逐一收到并且没有检测到错误。如果这样的系统使用循环余数核对代码来检测错误,在发送方开始发送第二组数据之前,接收方要生成循环余数核对代码并对循环余数核对代码进行评价。因此,接收方生成循环余数核对代码所需的时间限制了系统的性能。当系统的要求增加并导致需要更大的带宽或更大的信息吞吐量时(如更高效的比特速率),这一问题就会变得非常重大了。虽然人们希望带有多个处理器的系统能够帮助缓解这一问题,但实际情况并非如此。例如,关于以前所用的方法是按照串行方式生成循环余数核对代码,每一步都要依赖上一步的结果。因此,以前所用的方法很难借多个处理器的便利来加快循环余数核对代码的生成过程。
现在已经认识到,本发明的某些方面并不局限于循环余数核对代码,本发明的某些方面可以应用于基于余数的代码以及总体上并非绝对需要系数的操作。循环余数核对代码可以被看作是基于余数代码的一种形式。基于余数的另一种操作是密码系统。在密码系统的某些应用中,大的信息标号被处理。本发明的一个或多个方面可用于基于余数的代码以及包括循环余数核对代码和密码的操作,但本发明并不局限于应用在这些操作中。此外,本发明的一个或多个特殊实施方案可用来显著降低处理大信息标号所需的时间,这些信息标号应用在密码系统中。
然而,应该理解的是,本发明的任何一个方面不必完全涉及到先有技术的全部短处。
图示简介图1A表示的是以前技术所用的数据块,它由二进制数字串组成,这一数字串是数列“1101011011”,这一数列可看作代表多项式X9+X8+X6+X5+X3+X+1。
图1B表示的是以前技术所用的二进制数字串,这一数字串是数列“10011”,这一数列可看作代表多项式X4+X+1。
图1C表示的是在图1A中的数字串后面加上4个零后形成的数字串。
图2A表示的是以前技术为图1C中的数字串生成循环余数核对余数项和图1B中的循环余数核对多项式生成循环余数核对余数所进行的操作。
图2B表示的是在加罗瓦域中2中二进制数据的代数规则。
图2C和图2D表示的是线性反馈移位寄存器的例子。
图2E表示的是一种程序的功能模块图,该程序由表格驱动,被用于生成循环余数核对代码。
图2F表示的是另一种程序的功能模块图,该程序由表格驱动,被用于生成循环余数核对代码。
图2G是执行表格驱动程序的某一算法的流程图。
图2H是执行表格驱动程序的另一算法的流程图。
图3A是信息系统的模块图示意。
图3B表示的是发送方向接收方传递的数据。
图3C表示的是包括数据和循环余数核对代码的数据流。
图4A至图4F表示的是本发明的某一方面的某一实施方案中为图1C中二进制数字串所代表的多项式生成循环余数核对代码所进行的步骤。
图5A表示的是根据本发明的某一实施方案生成循环余数核对代码系统的模块示意图。
图5B表示的是图5A中数据处理器的分割器在某一实施方案中的特征。
图6是图5所示系统的某一实施方案的模块示意图。
图7是图6所示系统的某一实施方案的模块示意图。
图8A是图6所示数据处理器的某一实施方案的模块示意图。
图8B是图8A所示数据处理器中数据处理器的某一实施方案的模块示意图。
图8C是图8B所示分割器的某一实施方案的操作。
图9是数据处理器某一实施方案的流程图,为生成数据组D的循环余数核对代码,该数据处理器将数据组D分成K个部分。
图10A和图10B是流程图,它们表明的是含有二个处理器的实施方案中所执行的步骤。
图10C表明的是具有管网式结构的处理器单元的某一实施方案中所执行步骤的流程图。
图10D表示的是循环余数核对寄存器0、循环余数核对寄存器1、表格系数0寄存器和表格系数1寄存器,这些寄存器位于具有管网式结构的处理器中。
图11是图6所示数据处理器另一实施方案的模块示意图。
图12是数据处理器某一实施方案的流程图,为生成数据组D的循环余数核对代码,该数据处理器将数据组D分成K个部分。
本发明的详述图3A是通讯系统210的模块示意图,在通讯系统210中可以使用本发明的各种实施方案。通讯系统是信息系统的一种类型;它被用来经通讯线路或传输通道在起点和终点间传递信息。通讯系统的实例包括专用的点对点系统、有线系统、蜂窝电话系统和某一系统中组件间的数据母线;如中央处理器和存储装置之间的数据母线和/或存储装置之间的数据母线。像磁盘这样的存储介质也可以看作是一种通讯线路(或线路的一部分),其读/写区既是发送方又是接收方。还应理解的是,本发明可以被任何类型的信息系统所使用,这些信息系统可以包括通讯系统,但并不局限于必须包括通讯系统。
通讯系统210由发送方212和接收方214构成,通讯线路216将这二者连接起来。通讯线路216可以是任何类型的通讯线路,例如可以是有线的(如导线、光纤电缆)、无线的(如微波线路、卫星线路)或者是有线和无线的组合形式。但通讯线路并不局限于这些线路形式;通讯线路可以是公共的、私人的、专用的和/或共享的;如网络线路。通讯线路216可使用电路转换、包转换或这二者的组合形式。通讯线路可以使用任何通讯协议或通讯协议的组合,其中通讯协议包括互联网通讯协议,但通讯协议并不局限于互联网通讯协议。发送方212和接收方214可以使用任何类型的界面与通讯线路216对接,例如可以使用调制解调器、Ethernet界面、无线界面或任意的组合界面;但界面并不局限于上述形式的界面。
图3B表示的是数据220,该数据将从发送方212传递到接收方214。这一数据可以是任何类型的信息;信息类型可以包括信息数据、非信息数据或组合形式的数据,但信息类型并不局限于这些形式。例如,驻留在发送方212中的数据可以来自一个或多个发送方212以外的出处,或发送方212内部的出处,或二种出处都有。数据可以是任何形式的数据,数据可以包括二进制数例,如二进制数字串;但数据并不局限于二进制数列。数据可以分成所示的数据组(如数据组222、224),也可以不分成这样的数据组。如果数据分成数据组,每组中的数据量可以预先制定(如指定和/或提前约定)、也可动态确定。每组中的数据量可以是固定的,也可以是变化的。
还应理解的是,本发明并不局限于被用于从发送方传递到接收方的数据;而可以用于特定数据,这些特定数据包括但不局限于以下数据将要传递的数据、已接收的数据、已接收并修改过的数据、根据所收到的数据而生成出的数据、用于生成将要被传递数据的数据或任何其他既不要传递也没有收到的数据。正如本文所用的,“指定的”是指由任何出处指定的,这些出处包括发送方、接收方、系统或它们的组合,但出处并不局限于这些形式。可以以任何方式、形态和格式来提定数据。
发送方212为数据生成一个或多个循环余数核对代码。举例而言,如果数据分成数据组,则发送方212要为每组数据都生成一个循环余数核对代码。发送方212和接收方214通常都知道循环余数核对代码的特征;该特征可以预定也可以不预定;可以是一致的也可以是不一致的。
循环余数核对代码有许多不同的类型,下面列出了其中的一些(1)反映出的数据(reflected data implementations);(2)倒转的数据(reversed data implementations);
(3)倒转的多项式(reversed polynomial implementations);(4)初始化的数值(initialized value implementation);(5)倒转的终值(reversed final value implementation);(6)“X或”化的初值(XOR’ed initial valueimplementation);(7)“X或”化的终值(XOR’ed final valueimplementations)。
这些循环余数核对代码类型以及其他的循环余数核对代码类型在下列参考文献和其他文献有所论述应用报告SPRA530,循环余数核对计算,著者Patrick Geremia;使用TMS320C54X的程序——数字化信号处理方案,著者Ross.N.Williams,1999年4月出版,第1-35页,标题循环余数核对错误检测算法指南,参见网站ftp//ftp.rocksoft.com/clients/rocksoft/papers/crcv3.txt,1993年8月19日,第1-32页(包括“Program for Writing CRCLookup Table”,1993年6月3日,以及关于Rocksoft TM型CRC算法的参考的文档);由Terry Ritter所著的“The Great CRCMystery”一文,Dobb博士的Journal of Software Tools一文,http//www.io.com/ritter/ARTS/CRCMYST.HTM,2月11(2)26-34,76-83,第一目录(CRCLIST1.HTM),第1-7页,第二目录(CRCLIST2.HTM),第1-10页,1986年2月;Seong Leong Ng和Bill Dewar,计算机通讯19(1996)257-263“Parallel Realizationof the ATM Cell Header CRC”,电子工程学院,新南威尔士州,悉尼,澳大利亚2052,第258-263页;R.J.Glaise所著,“ATwo-Step Computation of Cyclic Redundancy Code CRC-32 forATM Networks,http//www.research.ibm.com/journal/rd/416/glaise.txt,1997,第1-5页;Andrew S.Tanenbaum,Computer Networks,Prentice-Hall,Inc.,Englewood Cliff’s,新泽西州,1981年,第129-133页。”现参见图3C,数据和循环余数核对代码,如232、234可以组合形成数据流230。数据流230可以直接提供给通讯线路216(图3A所示),也可以不直接提供给通讯线路216。例如,数据流230可经一个或多个编码器提供给通讯线路216;编码器对数据流230进行编码处理;例如,对数据流230进行压缩。
在图3C所示的实施方案中,每组循环余数核对代码被分别附在与该循环余数核对代码相对应的数据组之后,如232、234分别附在222、224之后。然后,应该理解的是,循环余数核对代码可以以任何方式同数据进行组合。例如,在其他实施方案中,循环余数核对代码不必附在相应的数据组之后,而可以放在任何一个位置和/或与所对应的数据组形成一体。此外,在某些实施方案中,发送方212以一种方式将循环余数核对代码与数据组合在一起。在这种实施方案中,接收方214可以依据循环余数核对代码进行循环余数核对;由于组合在一起,如果余数项等于零,则可认定没有错误。
循环余数核对代码的大小取决于循环余数核对多项式,虽然对本发明没有要求,但循环余数核对代码的规模与数据组相比还是相对较小一些。循环余数核对代码的大小通常在3个字节到32个字节之间,包括3个字节和32个字节。
现在已经可以肯定,根据或至少部分地根据相应的数据,通过生成多个基本的循环余数核对代码,并至少部分地根据基本循环余数核对代码可以合成出相应数据的循环余数核对代码。在这里基本循环余数核对代码被定义为某种循环余数核对代码,它不是相应数据的循环余数核对代码,而是被用于生成这组数据的循环余数核对代码。
在继续进行说明之前,我们首先看一个实例,我们使用一个十进制的数字;这一例子将表明如何根据多个基本余数对一个余数进行合成处理。现在假定数据代表82这个值,将82除以7,得到一个余数。82这个值可以表达为如下式子82=80+2 方程1=8×10+2 方程282/7=[(8×10)+2]/7 方程382/7的余数={[(8×10)+2]/7}的余数方程4下面的式子可以应用到上面的式子中用来产生余数(a+b)mod c=(a mod c)+(b mod c) 方程5(a×b)mod c=(a mod c)×(b mod c)方程6将议程5和6应用到方程4的左边,可以将方程4扩展为如下等式(82/7)的余数=[(8×10)/7]的余数+(2/7)的余数 方程7(82/7)的余数=(8/7)的余数×(10/7)的余数+(2/7)的余数 方程8
在方程8右侧表达式中的余数就是基本余数的一个实例。从方程8左侧表达式中的基本余数可以得到82/7的余数,余数如下(82/7)的余数=1×3+2 方程9=5方程10图4A至图4F是一个例子,它表明的是针对一组二进制数据,如何通过生成这组数据的多个基本循环余数核对代码,并根据这些基本循环余数核对代码合成得到这组数据的循环余数核对代码。在这个例子中,数据是二进制数字组D,它由图1C中的二进制数字串“11010110110000”组成。正如前面所述的,数组D可以看作代表多项式X13+X12+X10+X8+X7+X5+X4。循环余数核对多项式是图1B中的循环余数核对多项式,由二进制数字串“10011”代表,如前所述,这一数字串可以看作代表多项式X4+X+1。
现在参见图4A,在这个例子中,生成多个基本循环余数核对代码的第一步是将数组D分成多个部分,比如分成P0部分和P1部分。第一部分由二进制数列“0110000”构成,既数组D的第0个二进制数字到第6个二进制数字。第二部分P1由数列“1101011”构成,既数组D的第7个二进制数字至第13个二进制数字。
P0部分可以看作代表某一多项式,P1部分可以看作代表某一多项式。照此观点,P0部分可以被看作代表X5+X4这一多项式。第二部分P1可以被看作代表X6+X5+X3+X+1这一多项式。
但是,这两部分也可以被看作是代表数组D所代表的多项式中的某些部分。照此观点,第一部分P0代表数组D所代表的多项式的X5+X4项。第二部分P1代表数组D所代表的多项式中的X13+X12+X10+X8+X7项。第二部P1所代表的项可以表达成二个因子的乘积(X6+X5+X3+X+1)×X7。因子X7表明了第二部分P1在数组D中的位置,更具体而言,它表明了第二部分P1的LSB在数组D中的二进制模式位置。所以,对于其他部分的大小而言,恰当的因子不会是X?因此,对于数组D所代表的多项式PD,可以得到下列关系式PD=(X6+X5+X3+X+1)×X7+(X5+X4)方程11=P1×X7+P0方程12其中PD=数组D所代表的多项式;P1=第二部分P1所代表的多项式;P0=第一部分P0所代表的多项式。
要生成这个例子中的循环余数核对代码,首先希望确定出多项式除法操作所生成的余数项,在除法运算中,被除数是数组D所代表的多项式,除数是循环余数核对多项式。关于余数,可以得到下面的关系式PD的余数=(P1×X7+P0)的余数 方程13其中PD的余数=数组D所代表的多项式除以循环余数核对多项式的余数。
(P1×X7+P0)的余数=(P1所代表的多项式乘以X7+P0)除以循环余数核对多项式的余数。
下列关系式可用来帮助生成数组D各部分的余数(a+b)mod c=(a mod c)+(b mod c) 方程14(a×b)mod c=(a mod c)+(b mod c) 方程15这样,对PD的余数而言,方程3右侧的表达式可以进行扩展,得下列关系式PD的余数=(P1×X7)的余数+P0的余数 方程16PD的余数=P1的余数×X7的余数+P0的余数 方程17图4B至图4E表明的是计算方程17右侧表达式中余数所采取的步骤。
现在参见图4B,正如前面所述的,第二部分P1代表多项式X6+X5+X3+X+1,第一部分除以二进制数字串“10011”,这一数字串代表的是循环余数核对多项式X5+X4,得到一个二进制数字串“00001”,该数字串代表余数1。
现在参见图4C,二进制数字串“10000000”所代表的多项式X7除以二进制数字串“10011”所代表的循环余数核对多项式,得到二进制数字串“1011”,该数字串代表余数X3+X+1。
现在参见图4D,代表图4B中除法运算所得余数的二进制数字串乘以代表图4C中除法运算所得余数的二进制数字串“10011”,得到的乘积为“1011”,这一乘积代表多项式X3+X+1。注意乘法运算的复杂程度主要取决于循环余数核对多项式的长短,而不是取决于数组的大小。乘积代表数组D所代表的多项式中X13+X12+X10+X8+X7这些项的余数。正如前面所述的,X13+X12+X10+X8+X7这些项是数组D所代表的多项式中由数组D的第二部分P1所代表的项。
现在参见图4E,正如前面所述的,第一部分,既二进制数列“0110000”除以二进制数字串“10011”,得到余数“0101”,第一部分代表多项式X5+X4,“10011”代表循环余数核对多项式,余数“0101”代表多项式X2+1。该余数不仅是第一部分P0所代表的多项式的余数,还是数组D所代表的多项式中X5+X4项的余数。正如前面所述的,X5+X4是数组D第一部分所代表的多项式中的非零项。
现在参见图4F,二进制数字串“0101”所代表的图4E中的除法运算余数与二进制数字串“1011”所代表的图4D中的乘积相加,得到二进制数字串“1110”,这一数字串代表多项式X3+X2+X。该和数就是数组D所代表的多项式的余数。
应该认识到,图4F中数组D所代表的多项式的余数与图2A所示的用以前技术所得到的余数是相同的。
现在再参见图4F,如果余数大于或等于循环余数核对多项式,则通过余数除以循环余数核对多项式进行进一步简化,以便得到一个小于循环余数核对多项式的余数,既得到一个小于除数的余数。
所以,图4A至图4F表明了一个例子,它表明了如何通过生成一个数组的多个基本循环余数核对代码(至少是部分地),并将基于这些基本代码的数组循环余数核对代码加合起来,来完成生成某一数组的循环余数核对代码。
正如前面所述的,方程11-13以及16和17中的项X7由图4C中的二进制数字串“10000000”代表。X7项表明了第二部分P1在数组中的位置,更具体而言,它表明了第二部分P1的LSB在数组中的二进制模式位置。在后面的本文中,表明数组部分Pj位置的多项式将被统一定为Xstartj;其中Pj部分含有LSB,该LSB位于数组的二进制位置startj上。
注意X7(更统一的形式为Xstsrtj,其中startj等于7)的余数不必每次都进行计算,而是根据需要进行一次(或隔次,事先预定好)计算,然后将余数存储起来以备调用。正如本文所使用的,生成过程包括对预定存储数据(如在查寻表中的数据)进行计算和调用和/或这二种操作的组合,但生成过程并不局限于上述操作。
应该认识到,图4A-4F中的实例只是起到说明的作用,这一实例并不对本发明构成限制。此外,应该理解的是,本发明各个方面的实施过程中可以不涉及到多项式或多项式除法,多项式或多项式除法只不过是一种分析工具而已。
在某些实施方案中,两部分的余数可以并行,例如图4B和图4E,既同时或部分同时生成。例如,数组D可以分成两个大小近似相等的部分(如图4A所示的各P0部分),这样生成两个余数所需要的时间大约为不进行数组分割情况下生成余数所需时间的一半(图2A)。
通过进行乘法运算(如图4D中)、加法运算(如图4F中)以及必要情况下的简化运算(例如,如果和数大于或等于循环余数核对多项式,见上面关于图4F的说明)可以得到数组D的余数(如图4F)。在这一实例中,生成N字节数组的余数所需的时间近似计算为tCRC(n)=tCRC(n/2)+m 方程18其中tCRC(n)=在不分割数组的情况下,生成N字节数组的余数所需要的时间。
m=乘法运算、加法运算以及必要情况下简化运算所需要的时间。
生成循环余数核对代码所需的时间减少一半可以显著改善某些系统的性能,尤其是生成循环余数核对代码所需时间对系统信息吞吐量有重大影响情况下,可以显著改善系统的性能。
但是,应该理解的是,没有要求并行生成多个循环余数核对代码,生成循环余数核对代码所需的时间也没有要求以方程18的形式表示出来。
图5A是本发明某一方面的一个实施方案中数据处理器240的模块示意图,这一处理器可以用于图3A中的通讯系统,对数组D生成循环余数核对代码。
正如本发明所用的,数据处理器被定义为任何类型的处理器。例如,数据处理器可以是可编程的,也可以是非可编程的;可以是通用的,也可以是专用的;可以是专属的,也可以是非专属的,可以是分布式的,也可以是非分布式的和/或这些形式的组合。数据处理器可由硬件、软件、固件、硬件电路和/或这些部分的组合形式构成。数据处理器可以包括或不包括一个或多个带有一个或多个子程序或模块的计算机程序;子程序或模块中含有数据处理要执行的多个指令;数据处理器可以进行或不进行与生成循环余数核对代码不相关的任务。如果数据处理器包括一个个以上的模块,则这些模块可以是某一计算机程序的一些部分,或者是其他计算机程序的组成部分。
数据处理器240包括分割器242,分割器242接收数组D并将数组D分成多个部分,例如分成K个部分,第一部分是P0,第K部分PK-1。正如本文所用的,部分被定义为数据的任何部分。这些部分可以是任何格式的或由任意方式生成。例如,某一部分可以是一段数字串。如果某一部分由多个二进制数字构成,则这些二进制数字不必与数组中另一二进制数字相邻。这些部分可以彼此相连,也可以彼此分开。这些部分可以重叠,也可以不重叠。这些部分中的数目和/或大小可以预定,也可以不预定。虽然本文所示的第一部分P0和第K部分PK-1在大小上近似相同,并且没有出现重叠,但没有这样的要求。在某些实施方案中,将数字串分成彼此之间具有数量不同的二进制数字是更有利的,正如下面将要讨论的情况。
图5B表明的是分割器242某一实施方案的特征244,在这一实施方案中,分割器242接收到由二进制数字串构成的数组D,并将数组D分成P0到PK-1的K个部分。二进制数字串含有N个二进制数字,第0个数字为LSB,第N-1个数字为MSB。P0部分由P0起点的二进制数字(既第0个数字LSB)到P0终点的二进制数字组成。Pi部分由数字串Pj部分的起点数字到Pi部分的终点数字组成。PK-1部分由PK-1部分的起点数字到PK-1部分的终点数字(既数字串的MSB,也是数字串的第N-1个二进制数字)组成。
现在再参见图5A,这些部分被提供给基本循环余数核对代码生成器246,生成器246在第248行还接收到代表循环余数核对多项式的数据。可以使用任何的循环余数核对多项式。发送方212和接收方214都知道这一循环余数核对多项式,该多项式可以是固定的,也可以是不固定的。该循环余数核对多项式可以有任何格式,包括二进制数列,既二进制数字串格式,但循环余数核对多项式并不局限于二进制数列这种格式。
基本循环余数核对代码生成器246生成代表多个循环余数核对代码的数据,既m个循环余数核对代码;它被标记为循环余数核对代码0至循环余数核对代码m-1,此后的本文将它称为基本循环余数核对代码或PCRC代码,这样是为了与根据基本循环余数核对代码或PCRC而生成的循环余数核对代码区分开来。在某些实施方案中,每一组基本循环余数核对代码都与数组某一部分相对应。m的值可以等于K,也可以不等于K。多组基本循环余数核对代码最好是彼此独立生成,基本循环余数核对代码可以彼此并行生成,也可以不并行生成。正如本文所使用的,彼此间独立被定义为彼此间互不依赖。并行生成被定义为彼此间至少部分并行生成。彼此间并行操作被定义为彼此间至少部分并行操作。
在第250行,多组基本循环余数核对代码被提供给循环余数核对代码合成器252,合成器252合成数组D的循环余数核对代码。正如本文所使用的,合成被定义为以任何方式、形态和格式进行的生成,但不包括只是简单地将多组基本循环余数核对代码彼此附加在一起。
正如前面所述的,“相关的”这一词语被定义为至少有所相关,这样是为了不排除与一个以上的事物相关。
正如本文所使用的,循环余数核对代码包括基本循环余数核对代码,循环余数核对代码被定义为一组与表示余数的数据有特定关系的代码。这种特定关系可以是任何类型的关系,或者是任何类型关系的组合。应该理解的是,代表余数的数据可在对数组进行分割的情况下生成,也可在不对数组进行分割的情况下生成。
循环余数核对代码是基于余数代码的一种。正如上面所述的,已经知道本发明的一些方面并不局限于循环余数核对代码,而可以应用于基于余数的代码和总体上并非绝对需要系数的操作。另外一种基于余数的操作被用于密码系统。在某些密码应用系统中,要对大的信息标号进行处理(mod n)。本发明的一个或多个方面可应用于基于余数的代码以及总体上包括循环余数核对代码和密码系统的操作,但本发明并不局限于此。此外,一个或多个特殊的实施方案可以显著地降低处理与密码系统相关的大信息标号所需要的时间。
某些生成循环余数核对代码的实施方案与代表循环余数核对余数的数据有特定的关系,这些关系如下所示,但这些关系并不局限于此(1)反映出的数据(reflected data implementations);(2)倒转的数据(reversed data implementations);(3)倒转的多项式(reversed polynomial implementations);(4)初始化的数值(initialized value implementation);(5)倒转的终值(reversed final value implementation);(6)“X或”化的初值(XOR’ed initial valueimplementation);
(7)“X或”化的终值(XOR’ed final valueimplementations)。
此外,该特定的关系可以是预定的或固定的,但这种特定的关系并不局限于上述列出的关系。举例而言,某种特定的关系可能被统一地用于所有的数组,或者用于某些数组或数组中的某些部分的某一种特定关系可以不同于用于数组D或其他数据部分的特定关系。
正如本文所使用的,数据的循环余数核对代码包括下列组成部分,但并不局限于这些部分(1)与代表数据的循环余数核对余数的数据有特定关系的代码;(2)与代表数据的循环余数核对余数的数据有特定关系的代码,循环余数核对余数的代表数据与数据有特定的关系。
循环余数核对代码可以以任何方式生成,包括使用串行程序、并行程序或二者的组合,但生成方式并不局限于此。循环余数核对代码可以是任何类型的,并且可以是任何格式的。例如,在某一实施方案中,代表循环余数核对代码的数据由驻存在内存中的信号构成,该信号与其他信号共存。在另一实施方案中,代表循环余数核对代码的数据由非驻存和/或非共存的信号构成。
基本循环余数核对代码可以与某数据部分相关,也可以与某数据部分不相关。如果基本循环余数核对代码与某一数据部分是相关的,则该基本循环余数核对代码是根据该数据部分而生成的,但不必是这一数据部分的基本循环余数核对代码。正如本文所使用的,某一数据部分的基本循环余数核对代码包括以下部分,但并不局限于此(1)与代表某一数据部分的循环余数核对余数的数据有特定关系的代码;(2)与代表数据的循环余数核对余数的数据有特定关系的代码,代表循环余数核对余数的数据与某一数据部分有特定的关系。
分割器242、基本循环余数核对代码生成器246和循环余数核对代码合成器252可以是可编程的,也可以是非可编程的,可以是通用的,也可以是专用的;可以是专属的,也可以是非专属的;可以是分布式的,也可以非分布式的;可以是共享的,也可以是非共享的;或者是这些形式的组合。分割器242、基本循环余数核对代码生成器246和循环余数核对代码合成器252可以包括或不包括一个或多个子程序或模块,其中每个子程序或模块含有一个或多个由数据处理器240执行的指令,每个子程序或模块可以执行或不执行与生成循环余数核对代码不相关的任务。
图6表明的是图5A中数据处理器240的另一种实施方案。在该实施方案中,数据处理器包括分割器262,该分割器接收数组D,并将数组D分成二个部分,既第一部分P0和第二部分P1。在第263、264行,第一部分P0和第二部分P1被提供给基本循环余数核对代码生成器266,该生成器还接收位于第268行的代表循环余数核对多项式的数据,并生成二组基本循环余数核对代码;一组基本循环余数核对代码被称为P0的基本循环余数核对代码,它与数组的P0部分相对应。另一组基本循环余数核对代码被称为P1的基本循环余数核对代码,它与数组的P1部分相对应。代表与数组第一部分P0相关的基本循环余数核对代码的数据和代表与数组第二部分P1相关的基本循环余数核对代码的数据在第270、272行被提供给循环余数核对合成器274,合成器274将这二组数据结合在一起生成代表数组D的循环余数核对代码的数据。
图7表明的是图6A中数据处理260的实施方案280。在这一实施方案中,基本循环余数核对代码生成器280含有第一基本循环余数核对代码生成器284和第二基本循环余数核对代码生成器286。第一基本循环余数核对代码生成器在288行接收代表第一部分P0的数据以及代表循环余数核对多项式的数据,并生成第一部分P0的基本循环余数核对代码。第二个循环余数核对代码生成器286在第288行接收代表第二部分P1的数据和代表循环余数核对多项式的数据,并生成第二部分P1的基本循环余数核对代码。基本循环余数核对代码生成器284、286可以是相同的,也可以是不同的;可以彼此并行操作,也可以彼此异步操作。
数据循环余数核对P0代表与第一部分P0相关的基本循环余数核对代码,数据循环余数核对P1代表与第二部分P1相关的基本循环余数核对代码,这二组数据在第288、290行分别提供给循环余数核对合成292,合成器292将这二部分的基本循环余数核对代码结合在一起,生成代表数组D的循环余数核对代码的数据。
图8A表明的是图7中数据处理器280的实施方案300。举例而言,该实施方案可应用于执行图4A-4F的例子中所表明的操作。在实施方案300中,数据处理器包括分割器302,它接收表示为二进制数字串的数组D。现参见图8B,该二进制数字串含有N个二进制数字,包括第0个二进制数字LSB和第N-1个二进制数字MSB。分割302将这一数字串分成二个部分,P0部分和P1部分。P0部分由P0起点的二进制数字(既第0个二进制数字LSB)至P0终点的二进制数字组成,P1部分由P1起点的二进制数字至终点的二进制数字PK-1(即第N-1个二进制数MSB)组成。
图8C表明的是分割器302的操作实例。在这一例子中,数组是图1C中的二进制数字串“11010110110000”。正如前面有关图1C的描述,数组D可以看成代表某一多项式的系数,该多项式有下列项X13+X12+X10+X8+X7+X5+X4。
分割器302将该二进制数字串分成二部分。第一部分P。由二进制数列“0110000”组成,既由数组D的第0个二进制数字至第6个二进制数字组成。第二部分P1由二进制数列“1101011”组成,既由数组D的第7个二进制数字至第13个二进制数字组成。因此,在这一例子中,P0的起始数字为第0个数字,P0的终点为第6个数字。P1的起点为第7个数字,P1的终点为第13个数字。
P0和P1部分本身可被看作为代表多项式的系数。照此观点,第一部分P0,既二进制数列“0110000”代表多项式X5+X4。第二部分P1,既二进制数列“1101011”可被看作是代表多项式(X6+X5+X3+X+1)的系数。
此外,由于数组D可被看作为代表某一多项式,所以可以认为分割器302是将某一多项式分成了二部分。照此观点,第一部分P0,既二进制数列“010000”代表X5+X4项。第二部分P1,既二进制数列“1101011”代表X13+X12+X10+X8+X7项。后面的这些项提取公因子后可变为(X6+X5+X3+X+1)X7,并可以表达为(X6+X5+X3+1)Xstartj,其中startj等于7。注意X7这一项可以由二进制数字串“10000000”代表。
第一个基本循环余数核对代码生成器303包括循环余数核对余数生成器304,生成器304在第305行接收代表第一部分P0的数据以及在306行接收代表循环余数核对多项式的数据,并生成P0部分的循环余数核对余数数据。
第二个基本循环余数核对代码生成器308带有第一个循环余数核对余数生成器310,生成器310在第312行接收代表第二部分P1的数据以及代表循环余数核对多项式的数据,并生成第二部分P1的循环余数核对余数数据。第二个循环余数核对代码生成器314在第316行接收代表多项式Xstartl的数据,在第306行接收代表循环余数核对多项式的数据,并生成多项式Xstartl的余数数据。代表第二部分P1的循环余数核对余数的数据以及代表多项式Xstartl余数的数据在第318、320行被提供给乘法器。该乘法器生成代表这二个循环余数核对余数乘积的数据。
第二个循环余数核对代码生成器包括循环余数核对余数生成器,它接收代表第一部分P6的数据和代表循环余数核对多项式的数据,并生成代表P0部分的余数的数据。
循环余数核对合成器322含有加法器324,加法器在第326行接收代表两组循环余数核对余数乘积的乘法结果数据以及在第328行接收代表P0部分循环余数核对余数的数据。加法器324在第330行生成代表和数的数据,这一和数被提供给限制性循环余数核对余数生成器332。如果和数所代表的多项式大于或等于循环余数核对多项式,则限制性循环余数核对余数生成器332通过将多项式之合除以循环余数核对多项式进行进一步的简化,以得到余数,该余数被用来生成数据D的循环余数核对代码。如果和数所代表的多项式小于或等于循环余数核对多项式,则和数就是余数,限制性循环余数核对余数生成器332将不再进行进一步的简化操作。
循环余数核对余数生成器304、310、314可以是任何类型的循环余数核对余数生成器,可以包括串行类型或并行类型、表格驱动型或非表格驱动型、逐一字节型或多字节型和/或这些类型的组合形式的生成器,但生成器并不局限于这些类型。循环余数核对余数生成器不必与其他循环余数核对余数生成器相同。
在某一实施方案中,多项式Xstartj的余数数据储存在循环余数核对余数生成器314中。如果多项式Xstartl的循环余数核对余数储存在循环余数核对余数生成器314中,则循环余数核对余数生成器314是通过访问这一存储数字来生成多项式Xstartl的余数,而不是通过实际计算来生成多项式Xstartl的余数。
图9是流程图350,它表明的是数据处理器某一实施方案中所执行的步骤,该数据处理器将数组分成K个部分来生成数组D的循环余数核对代码。在步骤352,数组被分成K个部分,这K个部分为P1部分至Pk-1部分。在步骤354,生成每个部分的循环余数核对余数,第j部分的循环余数核对余数在这里被称为循环余数核对余数Pj。在步骤356,生成K-1个多项式的循环余数核对余数,第j个多项式在这里被称为Xstartj,第j个多项式的循环余数核对余数在这里被称为循环余数核对余数Xstartj。在步骤358,根据(循环余数核对余数Pj)+(循环余数核对余数Xstartj)计算出P1部分至Pk-1部分的积。在步骤360,通过将循环余数核对余数P0与步骤358所生成的K-1个积相加而生成数组的循环余数核对余数。在步骤362,将确定数组的循环余数核对余数是否大于或等于循环余数核对多项式,如果是大于或等于,则通过除以循环余数核对多项式来进一步简化数组的循环余数核对余数。
例如,为了降低计算数组D的循环余数核对代码所需要的时间,在某些实施方案中,一个或多个基本循环余数核对代码可以彼此并行生成。举例而言,在某一实施方案中,数组D被分成二个大小近似相等的部分(如图4A所示),每一部分的余数并行生成。生成这二套余数所需的时间约为不对数组进行分割情况下(图2A中的情况)生成余数所需时间的一半。要得到数组D的余数(如图4F),可以执行乘法运算(如图4D)、加法运算(如图4F),如有必要,还可执行简化运算(例如,如果和数大于或等于循环余数核对多项式的情况下,见上面有关图4F的说明)。在这样的实施方案中,生成N个二进制数字组成的数组的余数所需时间近似为tcrc(n)=tcrc(n/2)+m 方程18其中tcrc(n)=在不对数组进行分割的情况下,生成由N个二进制数字组成的数组的余数所需时间。
m=乘法运算、加法运算以及必要情况下简化运算所需的时间。
但是,应该认识到,基本循环余数核对代码并不要求彼此间并行生成,也不要求生成循环余数核对代码所需的时间表达为方程18。
在某些实施方案中,数据处理器含有多个处理器单元,这些处理器单元彼此间可以并行操作,也可以不并行操作;彼此间可以基本相同,也可以彼此不同。多个处理器单元可以集成在单独一个包中,也可以不集成在单独一个包中。其中处理器单元被集成在单独一个包中,并彼此间可进行并行操作的处理器包括Analog Devices公司生产的TigerSHARC和Hammerhead处理器、Motorola公司生产的C6X处理器,但这类处理器并不局限于这二公司生产的处理器。处理器可以是也可以不是任意类型的使用很长指令字符的处理器。
图10A和10B是流程图370、372,这二张图表明的是含有二个处理器单元的实施方案中所执行的步骤;这二个处理器单元在这里是处理器A和处理器B。流程图370表明的是处理器A所执行的步骤,流程图372表明的是处理器B所执行的步骤。现在参见图10A,在步骤374,数组被分成K个部分,在这里K个部分是P0部分至PK-1部分。在这一实施方案中,处理器A(图10A所示)负责P0部分至P(K/2)-1部分,处理器B(图10A所示)负责P1/2部分至PK-1部分。在步骤376,处理器A生成P0部分至P(K/2)-1部分的循环余数核对余数,第j部分的循环余数核对余数被称为循环余数核对系数Pj。在步骤378,处理器A生成(K/2)-1个多项式的循环余数核对余数,在这里第j个多项式被称为Xstartj,第j个多项式的循环余数核对余数被称为循环余数核对余数Xstartj。在步骤380,处理器A根据(循环余数核对余数Pj)×(循环余数核对系数Xstartj)这一算式生成P1部分至P(K/2)-1部分的积数。在步骤382,通过将循环余数核对余数P0与步骤380所生的积加合在一起,处理器A生成数组循环余数核对余数的第一部分,在这里被称为循环余数核对余数A。
现在参见图10B,在步骤384,处理器B生成PK/2部分至PK-1部分的循环余数核对余数,第j部分的循环余数核对余数在这里被称为循环余数核对余数Pi。在步骤386,处理器B生成K/2个多项式的循环余数核对余数,在这里第j个多项式被称为Xstartj,第j个多项式的循环余数核对余数被称为循环余数核对余数Xstartj。在步骤388,处理器B根据(循环余数核对余数Pj)×(循环余数核对余数Xstartj)这一算式生成PK/2部分至PK-1部分的积数。在步骤390,处理器B通过将步骤388所生成的积数加合起来生成数组的循环余数核对余数的第二部分,该第二部分在这里被称为循环余数核对余数B。
现在再参见图10A,在步骤392,通过将数组的循环余数核对余数的第一部分循环余数核对余数A和数组的循环余数核对余数的第二部分循环余数核对余数B加合起来生成数组的循环余数核对余数。在步骤394,将确定数组的循环余数核对余数是否大于或等于循环余数核对多项式,如果是大于或等于,则通过除以循环余数核对多项式进一步简化数组的循环余数核对余数。
在某些实施方案中,处理器A和处理器B中的一个或者二个具有管网式结构。例如,Analog Devices公司生产的TigerSHARC处理器就含有二个具有管网式结构的处理器单元。
在某些实施方案中,具有管网式结构的处理器被用来并行生成基本循环余数核对代码。图10C是某一实施方案所执行算法的流程图400。该算法在执行时涉及到多个寄存器,如0号循环余数核对寄存器402、1号循环余数核对寄存器404、0号表格系数寄存器406、1号表格系数寄存器408和查寻表410(均表明在图10D中),上述项目可位于管网式结构的处理器412中。在步骤414,数组被分成至少二个部分,P0部分和P1部分。在这一实施方案中,P0部分和P1部分的长度相同。在步骤416,对0号循环余数核对寄存器和1号循环余数核对寄存器进行初始化,既将所有的二进制数字的逻辑状态置为“0”。在步骤418,一组二进制数字移出0号循环余数核对寄存器,一组二进制数字从P0部分移入0号循环余数核对寄存器。寄存器的值被称为表格系数0,该寄存器的值被确定为等于当二进制数字组移出0号寄存器时对P0部分移入的二进制数字组进行“X或”处理的结果,在步骤420,一组二进制数字移出1号循环余数核对寄存器,一组二进制数字从P1部分移入1号循环余数核对寄存器。寄存器的值被称为表格系数1,该寄存器的值被确定为等于当一组二进制数字移出0号循环余数核对寄存器时对P0部分移入的二进制数字进行“X或”处理的结果。在步骤422,循环余数核对寄存器0被定为等于对循环余数核对寄存器0的“X或”处理结果,此时查寻表中数据位于0号表格系数寄存器的值所确定的位置。在步骤424,循环余数核对寄存器1被定为等于对循环余数核对寄存器1的“X或”处理结果,此时查寻表中的数据位于1号表格系数寄存器的值所确定的位置。在步骤426,确定是否还有更多的二进制数字要从P0和P1部分移入寄存器,如果有更多的二进制数字要移入,则执行过程返回到该步骤。如果没有更多的数据要移入,则算法结来运行;其中循环余数核对寄存器中的内容代表P0部分的余数,循环余数核对寄存器1中的内容代表P1部分的余数。
虽然图10C中的算法带有零等待步骤,但本发明并不局限于此。例如,其他使用管网式结构的实施方案可以带有零以上等待步骤。然而,在图10C的实施方案中以及计算由P0部分和P1部分组成的数组的循环余数核对代码时,这一实施方案使用管网式结构处理器的效率比图2H中算法使用管网式结构处理器的效率更高。因此,对于特定的处理器而言,这一实施方案中的数组大小、循环余数核对多项式以及生成数组的循环余数核对所需的时间比使用图2H所示的以前所用算法生成数组的循环余数核对所需的时间要少。
在某些实施方案中,图10C中的算法、一个或多个其他使用管网结构来彼此间并行生成一个或多个基本循环余数核对代码的算法可带有等待步骤,也可以不带有等待步骤;这些算法在使用上涉及由多个处理器单元构成的数据处理器;其中一个或多个处理单元含有管网式结构。例如,某一实施方案使用Analog Devices公司生产的TigerSHARC处理器,该处理器带有二个处理器单元,每个处理器单元都具有管网式结构。在这一实施方案中,一个或多个使用管网结构并行生成一个或多个基本循环余数核对代码的算法可在一个或二个处理单元上运行。
在某些实施方案中,数据处理器240(图5A)带有被认为是分级式或循环式结构。例如,由基本循环余数核对代码生成器286(图7)所生成的基本循环余数核对代码本身可被当做为P1数据部分的循环余数核对代码。因此,可以根据生成数组D的循环余数核对代码所制定的原则来生成P1部分的循环余数核对代码。就是说,先根据P1部分生成该部分的基本循环余数核对代码,然后再根据这些基本循环余数核对代码生成P1部分的循环余数核对代码。举例而言,在某些实施方案中,基本循环余数核对代码生成器286可以包括以本发明为依据的数据处理器。
图11是图7中处理处理器280的另一实施方案430的模块示意图。图11中的数据处理器430包括分割器302(再参见图8)、基本循环余数核对代码生成器432或循环余数核对代码合成器322(再参见图8)。分割器302和循环余数核对代码合成器322分别与图8A中数据处理的分割器302和循环余数核对合成器322是相同的。与图8A中数据处理器的基本代码生成器情况相同,基本循环余数核对代码生成器432带有二个基本循环余数核对代码生成器434、436,但第二个基本循环余数核对代码生成器436不同于图8A中数据处理器所带有的第二个基本循环余数核对代码生成器308。
第一个基本循环余数核对代码生成器434包括循环余数核对余数生成器438,生成器438在第440行接收代表第一部分P1的数据以及在第442行接收代表循环余数核对多项式的数据。循环余数核对余数生成器438生成代表P0部分的循环余数核对余数的数据。
在实施方案430中,第二具基本循环余数核对代码生成器436包括乘法444,乘法器444的第一项输入在第446行接收代表第二部分P1的数据,乘法器444的第二项输入在第448行接收代表多项式Xstartj的数据。该乘法器生成乘积P1×Xstatrj,这一乘积在第450行输入给循环余数核对余数生成器452。循环余数核对余数生成器452在第442行还接收代表循环余数核对多项式的数据,并生成乘积P1×Xstartj的循环余数核对系数。代表乘积P1×Xstatrj的循环余数核对余数的数据被认为与P1部分相关。
代表乘积P1×Xstatrj循环余数核对余数的数据和代表P0部分循环余数核对余数的数据分别在第454。456行提供给加法器458,加法器458计算出和数。该和数在第460行输入到限制性循环余数核对余数生成器462中,循环余数核对余数生成器462还在第442行接收代表循环余数核对多项式的数据。如果和数所代表的多项式大于或等于循环余数核对多项式,则限制性循环余数核对余数生成器462通过将和数代表的多项式除以循环余数核对多项式进行进一步简化,以获得用于生成数组D的循环余数核对代码的余数。如果和数代表的多项式已经就是余数了,则限制性循环余数核对余数生成器462不进行进一步的简化。
图12是流程图500,它表明的是数据处理器某一实施方案中所执行的步骤,该数据处理器为了生成数组D的循环余数核对代码,将数组D分成K个部分。在步骤502,数组D被分成K个部分,在这里K个部分为P1部分至PK-1部分。在步骤504,按照(Pj部分)×Xstartj这一算式得出P1部分至PK-1部分的乘积。这一乘积由乘法运算生成,如有必要,可附加上相应的数字“0”。在步骤506,生成P0部分的循环余数核对余数,并生成步骤504生成的K-1个乘积的循环余数核对余数。这些K-1个余数被称为循环余数核对余数{(Pj部分)×(Xstartj)}。在步骤508,生成数组的循环余数核对余数,这一余数是该步生成的所有循环余数核对余数的总和,既循环余数核对余数P0与K-1个余数的合;在这里这个和数被称为循环余数核对余数(Pj部分)+(Xstartj)。
在步骤510,确定数组的循环余数核对系数是否大于或等于循环余数核对多项式,如果是大于或等于,则通过将循环余数核对余数除以循环余数核对多项式来做进一步的简化。
本发明并不局限于循环余数核对算法和上述表明的多项式。对所用的循环余数核对算法的类型和多项式的类型没有故意的限定。此外,正如上面所述的,已经知道本发明的许多方面并不局限于循环余数核对代码,而是可以用于基于余数的代码以及用于总整上并不绝对需要系数的操作。循环余数核对代码可以看作为基于系数代码中的一类。另一类基于余数操作的类型是密码系统。本发明的一个或多个方面可应用于基于余数的代码以及总体上包括循环余数核对代码和密码系统的操作;但操作并不只局限于循环余数核对代码和密码系统。
在某些实施方案中,数组被分成K个部分,当选择部分的数量时,应该考虑数组的大小。
虽然上述的循环余数核对合成器通过将多个基本循环余数核对代码加合起来来合成循环余数核对代码,但循环余数核对合成器并不局限于此,循环余数核对合成器可以用任何方式合成循环余数核对代码;可以通过多个基本循环余数核对代码加合这一方式,也可以不通过这一方式。
正如前面所述的,本发明的方法和设备并不局限于使用在通讯传输系统中,而是可以应用于任何包括任何类型信息的系统;既传输系统、存储系统和/或这些系统的组合;而且这些系统并不局限于这里提到的系统。
本发明的一个或多个实施方案可用于信息系统的任何部分,包括用于发送器、接收器或同时用于二者,但应用部分并不局限于发送器和接收器;例如,本发明的实施方案可用于有线界面(如调制解调器、Ethernet)、无线界面或任意的组合界面。
再如上面所述的,数据处理器可以包括硬件、软件、固件、有线电路和/或这些装置的组合。如果数据处理器含有一个或多个计算机程序,则一个或多个计算机程序被做为有形的计算机程序由计算机来执行,这些计算机程序在机器可读的存储装置中进行具体化。此外,数据处理器并不局限于专用的计算机平台、专用的处理器或专用的编程语言。计算机编程语言可以包括程序性编程语言、面向目标的编程语言或组合形式的语言,但编程语言并不局限于此。通用的计算机系统可以执行被称为操作系统的程序,也可以不执行这一程序;所谓的操作系统可以控制基他计算机程序的执行并且提供制表、错误诊断、输入/输出控制、记帐、编译、内存分配、数据管理、通讯控制和/或相关的服务,但操作系统也可以不提供这些功能和服务。
在某些实施方案中,数据处理器至少含有处理单元,处理单元经互连机制与内存系统相连。内存系统包括计算机可读可写的记录介质。这一介质可以是电源切断后就消失的,也可以是电源切断后不消失的。非易失性介质包括磁盘、内存和磁带。磁盘可以是移动性的磁盘,比如软盘;也可以永久性的磁盘,比如硬驱。易失性存储介质包括随机访问内存,比如动态随机访问内存或静态内存;但易失性存储介质并不局限于随机访问内存。随机访问内存可以是使用一个或多个集成电路来存储信息的类型,也可以不是这种类型的随机访问内存。已知有多种机制可以管理磁盘和集成电路内存元件之间的信息流动。
虽然本文表明和描述了各种实施方案,但本领域技术人员应该理解的是,本发明并不局限于这些实施方案,这些实施方案只是以实例的方式表现出来的,在不超出本发明范围和原理的情况下,可以进行各种变化和修改。因此,本发明只受限于本文所附的权利要求和等同物。
权利要求
1.一种由数据处理器执行的方法,该方法包括根据指定的数据生成多个基本循环余数核对代码;以及根据生成的多个基本循环余数核对代码合成得到指定数据的循环余数核对代码。
2.如权利要求1中的方法,其中生成多个基本循环余数核对代码包括生成至少二组相互独立的循环余数核对代码。
3.如权利要求1中的方法,其中合成指定数据的循环余数核对代码至少含有一项附加步骤。
4.如权利要求1中的方法,其中生成多个基本循环余数核对代码包括生成至少二组多个基本循环余数核对代码,每组多个基本循环余数核对代码根据指定数据的不同部分而生成,并与指定数据的不同部分相关。
5.如权利要求4中的方法,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分同时生成的。
6.如权利要求4中的方法,其中生成多个基本循环余数核对代码还包括生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于与二组基本循环余数核对代码中至少一组不相关的部分。
7.如权利要求6中的方法,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分同时生成的。
8.如权利要求4中的方法,其中将指定数据至少分成二部分包括将指定数据至少分成彼此没有相互重叠二部分。
9.如权利要求8中的方法,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分同时生成的。
10.如权利要求8中的方法,其中生成多个基本循环余数核对代码还包括生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于与二组基本循环余数核对代码中至少一组不相关的部分。
11.如权利要求10中的方法,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分同时生成的。
12.如权利要求4中的方法,其中生成至少二组多个基本循环余数核对代码还包括根据指定数据的相关部分以及根据代表指定数据中该部分的数据而生成至少二组基本循环余数核对代码中的至少一组基本循环余数核对代码。
13.如权利要求12中的方法,其中指定的数据由N个二进制数字组成,指定的数据包括第0个二进制数字LSB和第N-1个二进制数字MSB,其中在分割指定数据时,第j部分的LSB是指定数据第j部分起点的二进制数字,这一二进制数字位于指定数据的LSB和MSB之间,其中生成与第j部分相关的循环余数核对代码包括生成多项式Xstartj的循环余数核对代码。
14.如权利要求13中的方法,其中生成与第j部分相关的循环余数核对代码包括生成第j部分循环余数核对代码和多项式Xstatrj循环余数核对代码的积数。
15.如权利要求14中的方法,其中生成与第j部分相关的循环余数核对代码包括生成第j部分的余数和多项式Xstatrj的余数的乘积。
16.如权利要求14中的方法,其中积数是第j部分的余数和多项式Xstatrj的余数的多项式算法乘积。
17.如权利要求1中的方法,其中生成多个基本循环余数核对代码包括使至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成。
18.如权利要求1中的方法,其中生成多个基本循环余数核对代码包括将指定的数据分成多个部分;根据指定数据的各个部分而生成多组基本循环余数核对代码,每组基本循环余数核对代码与指定数据的各个部分相关。
19.如权利要求18中的方法,其中生成多个基本循环余数核对代码包括生成多组基本循环余数核对代码中的一组,该组基本循环余数核对代码独立于与多组基本循环余数核对代码中那一组不相关的所有数据部分。
20.如权利要求19中的方法,其中生成多个基本循环余数核对代码还包括多组基本循环余数核对代码中每一组与另一组基本循环余数核对代码至少是部分地同时生成。
21.如权利要求18中的方法,其中生成多个基本循环余数核对代码还包括多组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成。
22.如权利要求18中的方法,其中生成多个基本循环余数核对代码还包括生成与多个数据部分中某一部分相关的循环余数核对余数。
23.如权利要求18中的方法,其中生成指定数据的循环余数核对代码还包括生成代表多个基本循环余数核对代码总和的数据。
24.如权利要求23中的方法,其中生成指定数据的循环余数核对代码还包括生成代表总和数据的余数的数据。
25.如权利要求18中的方法,其中指定数据由N个二进制数字组成,指定的数据包括第0个二进制数字LSB和第N-1个二进制数字MSB。对指定数据的分割是将指定数据分成K个部分,多个数据部分中的第j部分的LSB是指定数据的第j个二进制数字,其中j大于或等于0,小于或等于N-1。生成多个基本循环余数核对代码包括为第1部分至第K-1部分生成代表多项式Xstatrj的循环余数核对代码的数据。
26.如权利要求25中的方法,其中生成每组多个循环余数核对代码包括生成代表相关数据部分的循环余数核对代码和多项式Xstatr循环余数核对代码的积数的数据。
27.如权利要求26中的方法,其中生成每组多个循环余数核对代码包括生成代表相关部分的余数和多项式Xstatr的余数的积数数据
28.如权利要求27中的方法,其中生成指定数据的循环余数核对代码包括生成代表多个基本循环余数核对代码和数的数据。
29.如权利要求28中的方法,其中生成指定数据的循环余数核对代码包括生成代表和数的余数数据
30.如权利要求1中的方法,其中生成指定数据的循环余数核对代码包括生成代表指定数据的循环余数核对余数的数据。
31.一种数据处理器,其包括根据指定的数据生成多个基本循环余数核对代码的装置。根据多个基本循环余数核对代码合成指定数据的循环余数核对代码的装置。
32.如权利要求31中的数据处理器,其中生成多个基本循环余数核对代码的装置组成如下将指定数据分成至少二部分的装置;生成至少二组基本循环余数核对代码的装置,每组基本循环余数核对代码根据至少二部分数据中相应的一组数据生成,并与该部分数据相关。
33.如权利要求32中的数据处理器,其中将指定数据分成至少二部分的装置包括将数据分成互不重叠二部分的装置。
34.如权利要求32中的数据处理器,其中生成至少二组多个基本循环余数核对代码的装置包括生成至少二组基本循环余数核对代码中至少一组代码的装置,该组基本循环余数核对代码独立于指定数据中至少二部分的一些部分;这些部分与至少二组基本循环余数核对代码中至少一组不相关。
35.如权利要求32中的数据处理器,其中生成多个基本循环余数核对代码的装置还包括使至少二组基本循环余数核对代码中至少一组与另一组基本循环余数核对代码至少是部分地同时生成的装置。
36.如权利要求34中的数据处理器,其中生成多个基本循环余数核对代码的装置还包括使至少二组基本循环余数核对代码中至少一组与另一组基本循环余数核对代码至少是部分地同时生成的装置。
37.一种数据处理器,其根据指定数据生成多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
38.如权利要求37中的数据处理器,其中数据处理器将指定的数据分成至少二个部分;并根据指定数据至少二个部分中的不同部分生成至少二组基本循环余数核对代码,每组基本循环余数核对代码与指定数据二个部分中的相应部分相关。
39.如权利要求38中的数据处理器,其中数据处理器将指定数据至少分成彼此没有相互重叠的二部分。
40.如权利要求38中的数据处理器,其中数据处理器生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于指定数据中至少二部分中的一些部分,这些数据部分与至少二组基本循环余数核对代码中至少一组不相关。
41.如权利要求38中的数据处理器,其中数据处理器生成的至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
42.如权利要求40中的数据处理器,其中数据处理器生成的至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
43.一种信息系统,其包括至少一个数据处理器,该数据处理器将指定的数据至少分成二个部分,并且生成至少二组基本循环余数核对代码,每组循环余数核对代码与至少二部分中各个的一部分相关,并根据这一部分成生。
44.如权利要求43中的信息系统,其中的数据处理器将指定的数据分割成至少两部分,并产生至少两个相互关联的基本循环余数核对代码,并且是根据该至少两个部分中的一个而产生的。
45.如权利要求44中的信息系统,其中数据处理器将指定数据分成至少二个没有相互重叠的部分。
46.如权利要求44中的信息系统,其中数据处理器生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基本循环余数核对代码中至少一组不相关。
47.如权利要求44中的信息系统,其中数据处理器生成的至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
48.如权利要求44中的信息系统,其中数据处理器生成的至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分同时生成的。
49.一种产品,其包括计算机可读介质;以及存储在计算机可读介质中的信息,该信息使计算机执行生成指定数据的循环余数核对代码的方法,该方法包括根据指定的数据生成多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
50.如权利要求49中的产品,其中生成多个基本循环余数核对代码包括将指定的数据分成多个部分;根据指定数据的各个部分生成至少二组基本循环余数核对代码,每组多个基本循环余数核对代码与指定数据的相应部分相关。
51.如权利要求50中的产品,其中将指定数据分成至少二个没有相互重叠的部分。
52.如权利要求50中的产品,其中生成至少二组基本循环余数核对代码包括生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基本循环余数核对代码中至少一组不相关。
53.如权利要求50中的产品,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
54.如权利要求52中的产品,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
55.一种通讯信号,其包括使计算机执行生成指定数据循环余数核对代码的方法的信息,该方法包括根据指定的数据生成多个基本循环余数核对代码,并根据多个基本循环余数核对代码合成指定数据的循环余数核对代码。
56.如权利要求55中的通讯信号,其中生成多个基本循环余数核对代码包括将指定的数据分成至少二个部分;根据指定数据的各个部分生成至少二组基本循环余数核对代码,每组多个基本循环余数核对代码与指定数据的相应部分相关。
57.如权利要求56中的通讯信号,其中将指定数据分成至少二个没有相互重叠的部分。
58.如权利要求56中的通讯信号,其中生成至少二组基本循环余数核对代码包括生成至少二组基本循环余数核对代码中的至少一组,该组基本循环余数核对代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基本循环余数核对代码中至少一组不相关。
59.如权利要求56中的通讯信号,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
60.如权利要求58中的通讯信号,其中生成多个基本循环余数核对代码还包括至少二组基本循环余数核对代码中至少一组是与另一组基本循环余数核对代码至少是部分地同时生成的。
61.如权利要求17中的方法,其中生成多个基本循环余数核对代码的过程包括通过提供指令管线,使多组基本循环余数核对代码中至少一组与多组基本循环余数核对代码中至少另一组是至少部分地同时生成。
62.一种由数据处理器执行的方法,该方法包括根据指定的数据生成多个基于余数的基本代码;根据多个基于余数的基本代码合成指定数据的基于余数的代码。
63.如权利要求62中的方法,其中生成多个基于余数的基本代码括根据指定数据的各个部分生成至少二组基于余数的基本代码,每组基于余数的基本代码与指定数据的相应部分相关。
64.如权利要求63中的方法,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组至少是部分地同时生成。
65.如权利要求63中的方法,其中生成至少二组基于余数的基本代码包括生成至少二组基于余数的基本代码中的至少一组,该组基于余数的基本代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
66.如权利要求63中的方法,其中将指定数据分成至少二个没有相互重叠的部分。
67.如权利要求65中的方法,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组至少是部分地同时生成。
68.如权利要求63中的方法,其中生成多个基于余数的基本代码还包括通过提供指令管线,使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组是至少部分地同时生成。
69.一种数据处理器,其包括根据指定的数据生成多个基于余数的基本代码的装置;根据多个基于余数的基本代码合成指定数据的基于余数代码的装置。
70.如权利要求69中的数据处理器,其中生成多个基于余数的基本代码的装置组成如下将指定数据分成至少二部分的装置;生成至少二组基于余数的基本代码的装置,每组基于余数的基本代码根据指定数据的各个部分成生,并与该部分相关。
71.如权利要求70中的数据处理器,其中将指定数据分成至少二个没有相互重叠的部分。
72.如权利要求70中的数据处理器,其中生成至少二组基于余数的基本代码的装置包括生成至少二组基于余数的基本代码中的至少一组的装置,该组基于余数的基本代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
73.如权利要求70中的数据处理器,其中生成多个基于余数的基本代码的装置还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组是至少部分地同时生成的装置。
74.如权利要求72中的数据处理器,其中生成多个基于余数的基本代码的装置还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组是至少部分地同时生成的装置。
75.一种数据处理器,其根据指定的数据生成多个基于余数的基本代码,并根据多个基于余数的基本代码合成指定数据的基于余数的代码。
76.如权利要求75中的数据处理器,其中数据处理器将指定数据分成至少二部分;并生成至少二组基于余数的基本代码的装置,每组基于余数的基本代码根据指定数据的各个部分成生,并与该部分相关。
77.如权利要求76中的数据处理器,其中数据处理器将指定数据分成至少互不重叠二部分。
78.如权利要求76中的数据处理器,其中数据处理器生成至少二组基于余数的基本代码中的至少一组,该组基于余数的基本代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
79.如权利要求76中的数据处理器,其中数据处理器生成的至少二组基于余数的基本代码中至少一组是与另一组基于余数的基本代码至少是部分地同时生成。
80.如权利要求78中的数据处理器,其中数据处理器生成的至少二组基于余数的基本代码中至少一组是与另一组基于余数的基本代码至少是部分地同时生成。
81.一种信息系统,其包括至少一个数据处理器,其中数据处理器根据指定的数据生成多个基于余数的基本代码,并根据多个基于余数的基本代码合成指定数据的基于余数的代码。
82.如权利要求81中的信息系统,其中数据处理器将指定的数据分成至少二部分,并至少生成二组基于余数的基本代码,每组基于余数的基本代码根据至少二部分数据中的各个部分而生成,并与该部分数据相关。
83.如权利要求82中的信息系统,其中数据处理器将指定数据分成至少二个没有相互重叠的部分。
84.如权利要求83中的信息系统,其中数据处理器生成至少二组基于余数的基本代码中的至少一组,该组基于余数的基本代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
85.如权利要求84中的信息系统,其中数据处理器生成的至少二组基于余数的基本代码中至少一组是与另一组基于余数的基本代码至少是部分地同时生成的。
86.如权利要求85中的信息系统,其中数据处理器生成的至少二组基于余数的基本代码中至少一组是与另一组基于余数的基本代码至少是部分地同时生成的。
87.一种产品,其包括计算机可读介质;存储在计算机可读介质中的信息,该信息使计算机执行生成指定数据的基于余数的基本代码的方法,该方法包括根据指定的数据生成多个基于余数的基本代码,并根据多个基于余数的基本代码合成指定数据的基于余数的代码。
88.如权利要求87中的产品,其中生成多个基于余数的基本代码包括将指定数据分成至少二部分;生成至少二组基于余数的基本代码,每组基于余数的基本代码根据指定数据的各个部分成生,并与该部分相关。
89.如权利要求88中的产品,其中将指定数据分成至少二个没有相互重叠的部分。
90.如权利要求88中的产品,其中生成至少二组基于余数的基本代码包括生成至少二组基于余数的基本代码中的至少一组,该组基于余数的基本代码独立于指定数据中至少二个部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
91.如权利要求88中的产品,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组至少部分地同时生成。
92.如权利要求90中的产品,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组至少部分地同时生成。
93.一种通讯信号,其包括使计算机执行生成指定数据的基于余数的基本代码的方法的信息,该方法包括根据指定的数据生成多个基于余数的基本代码,并根据多个基于余数的基本代码合成指定数据的基于余数的代码。
94.如权利要求93中的通讯信号,其中生成指定数据的多个基于余数的基本代码包括将指定数据分成至少二部分;生成至少二组基于余数的基本代码,每组基于余数的基本代码根据指定数据的各个部分成生,并与该部分相关。
95.如权利要求94中的通讯信号,其中将指定数据分成至少二个没有相互重叠的部分。
96.如权利要求94中的通讯信号,其中生成至少二组基于余数的基本代码包括生成至少二组基于余数的基本代码中的至少一组,该组基于余数的基本代码独立于指定数据中至少二部分中的一些部分,这些部分与至少二组基于余数的基本代码中至少一组不相关。
97.如权利要求94中的通讯信号,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少另一组是至少部分地同时生成。
98.如权利要求96中的通讯信号,其中生成多个基于余数的基本代码还包括使至少二组基于余数的基本代码中至少一组与至少二组基于余数的基本代码中至少一另组是至少部分地同时生成。
全文摘要
根据指定的数据,生成基于余数的代码所用的方法、设备和产品生成多个基于余数的基本代码,并根据多个基于余数的基本代码合成指定数据的基于余数的代码。在某一实施方案中,多个基于余数的基本代码至少包括二个基于余数的基本代码,每个基本代码都与指定数据的相关部分相对应。在另一实施方案中,至少二个基于余数的基本代码至少部分地相互同时生成。
文档编号H03M13/09GK1411630SQ01805157
公开日2003年4月16日 申请日期2001年2月20日 优先权日2000年2月17日
发明者拉塞克·瑞法特, 鲍里斯·乐内尔 申请人:模拟装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1