专利名称:丢失分组的检测方法
技术领域:
本发明的领域涉及分组传输。更具体而言,本发明涉及用于检测丢失分组的差错校验方法和链路级重试的组合。
背景技术:
一种常用的需要校验符号(signature)的差错校验方法是循环冗余校验(CRC)。CRC判断在发送器和接收器之间进行传输时分组是否出错。CRC不判断分组是否已丢失。图1示出了将N位(bit)的除数(D)与消息(M)一起使用,来产生CRC余数(R)(处理框100)。将消息左移N位产生移位后的消息(SM)(处理框110)。例如,如果除数等于1011而消息等于101100101,则移位后的消息等于1011001010000。移位后的消息除以除数来产生余数(处理框120)。用前面的例子,通过将移位后的消息1011001010000除以1011,产生了余数0011。将消息和余数合并到数据分组中(处理框130)。然后发送器将该数据分组发送给接收器(处理框140)。然后接收器用移位后的消息与余数的和除以除数(处理框150)。如果移位后的消息与余数的和除以除数所产生的余数等于零(处理框160),则数据分组未出错(处理框170)。如果不等于零,则数据分组出错(处理框180)。
循环冗余校验可以与链路级重试(link level retry)协同使用。链路级重试在发送分组时将每个分组的一份拷贝存储在先进先出(FIFO)缓冲器中。然后,一旦已将CRC解码,接收器就将一个消息发回给发送器。如果解码成功,则删除该分组。如果解码不成功,则重新发送分组。这仅对出错的分组而非丢失的分组起作用。所需要的是一种不仅在数据分组出错时,而且在数据分组丢失时也能使用的判断方法。此外,这需要在不消耗太多带宽的情况下完成。
在附图中,示例性而非限制性地图示了本发明,在附图中,相似的标号指示相似的元件,其中图1是对循环冗余校验的编码和解码进行处理的一个实施例的流程图。
图2是执行循环冗余校验的系统的一个实施例的简化框图。
图3是执行基于序号的循环冗余校验的系统的一个实施例的框图。
图4是编码和发送数据分组的处理的一个实施例的流程图。
图5是解码和接收数据分组的处理的一个实施例的流程图。
图6是重发丢失的数据分组的处理的一个实施例的流程图。
图7是用于将芯片组内两个单独的元件进行互连的中心接口(hub-interface)的一个实施例的框图。
具体实施例方式
以下描述了当在发送器和接收器之间传输分组时,使用差错校验符号来检测分组丢失的系统和方法,所述差错校验符号例如是循环冗余校验(CRC)。发送器和接收器有计数器。两个计数器起初彼此同步。使用发送器的计数器所提供的序号(sequence number)来生成CRC码。当发送分组时,发送器的计数器增加。接收器使用来自接收计数器的序号来对CRC码解码。如果所有分组都被接收到,则用于解码的序号应该与用于编码的序号相匹配。因此,如果CRC码未正确解码,则分组已丢失或出错。如果分组已丢失或出错,则将重发分组的消息发送给发送器。接收计数器不会增加,直到正确的分组被接收到并解码。
图2中示出了系统的简化形式。参照图2,发送器200将信息分组发送给接收器210。第一分组220包括产生第一CRC码的第一发送序号,该第一CRC码将被附接于所述分组的一个或多个数据段。例如,CRC0是从序号5产生的。在一个实施例中,只要发送序号等于接收序号,发送序号不一定要从零开始。在另一个实施例中,数据分组不包括序号。然后,第二分组230被发送,随后丢失。当解码第三分组240的CRC时,用于解码第三分组240的CRC的序号7将会与接收序号6不匹配。因此,CRC不会正确解码,并将第三数据分组视为出错。向发送器发送一个指示分组解码不正确的消息。还解码了第四分组250,但将会因为与第三分组240相同的原因而失败。一旦正确发送了第二分组230,那么接收序号就会增加。
图3示出了发送器200和接收器210的支持系统。复位信号300使得发送计数器(计数器1)310和接收计数器(计数器2)320可以被同步。或者,将两个计数器预先编程为当最后一帧被发送或接收时复位到零。CRC处理器330被耦合到发送器200,并使用来自发送计数器310的发送序号来生成每个数据分组的CRC码。然后将分组的拷贝放入缓冲器340中。如果分组丢失或出错,则将该数据分组的拷贝发送给接收器210。接收器210将丢失或出错的数据分组的序号发送给发送器200。在一个实施例中,缓冲器340是FIFO缓冲器。对于FIFO缓冲器,不需要发送序号,因为数据分组是按其被发送的顺序从缓冲器中读取的。一旦接收器210接收到数据分组,CRC解码器350(例如处理器)就将解码数据分组的CRC码。
图4示出了编码和发送数据分组的处理的一个实施例。发送计数器和接收计数器是以本领域内公知的方式同步的(处理框400)。将要传输的数据分段用于传输(处理框410)。发送计数器提供发送序号(SSN)(处理框420)。用发送序号和数据段来生成CRC码(处理框430)。将CRC码和数据段添加到报头和其它形成数据分组的信息中(处理框440)。在一个实施例中,还将发送序号添加到数据分组中。将该数据分组的拷贝存储在FIFO缓冲器中(处理框450)。将所述数据分组发送给发送器(处理框460)。计数器增加发送序号(处理框470)。计数器提供新的发送序号,来生成用于新数据分组的新CRC码(处理框420)。
图5示出了解码和接收数据分组的处理的一个实施例。发送计数器和接收计数器被同步(处理框400)。接收器接收到数据分组(处理框500)。接收器计数器提供接收序号(RSN)(处理框510)。使用接收序号来将数据分组的CRC码解码(处理框520)。在另一实施例中,将接收序号与分组中所包含的发送序号相比较。如果CRC码正确解码(处理框530),则处理所述分组(处理框540)。接收器发信号通知发送器,分组已被成功接收(处理框550)。计数器增加接收序号(处理框560),然后接收下一数据分组(处理框500)。如果CRC码未正确解码(处理框530),则忽略当前分组(处理框570),并且接收器发信号通知发送器重发所述分组(处理框580)。在一个实施例中,重发指示包括丢失分组的序号。接收下一数据分组(处理框500)。
图6示出了重发数据分组的处理的一个实施例。发送器从接收器接收消息(处理框600)。如果来自接收器的消息指示CRC被正确解码(处理框610),则删除FIFO缓冲器中相应的数据分组拷贝(处理框620)。发送继续(处理框630),发送器从接收器接收下一消息(处理框600)。如果来自接收器的消息指示CRC未被正确解码(处理框610),则发送器暂停其它数据分组的发送(处理框640)。发送FIFO缓冲器中下一可用的分组(处理框650)。发送器从接收器接收指示所重发的数据分组是否被正确解码的消息(处理框660)。如果所重发的分组未正确解码(处理框670),则再次发送该分组(处理框650)。如果所重发的分组被正确解码(处理框670),则删除FIFO缓冲器中所重发的分组(处理框680)。如果在FIFO缓冲器中还有分组(处理框690),则将FIFO缓冲器中下一可用的数据分组发送给接收器(处理框650)。如果FIFO缓冲器中不再有分组(处理框690),则发送继续(处理框630),并且发送器从接收器接收下一消息(处理框600)。
图7示出了使用CRC丢失分组检测的系统的一个实施例。更具体而言,图7示出了用于将芯片组内两个单独的元件进行互连的中心接口704(即中心代理)的一个实施例。中心代理在两个或更多单独的总线和/或其它类型的通信线路之间提供集中连接。
例如,如图7另外所示,芯片组包括存储器控制中心704(MCH)和输入/输出(ICH)中心706。如图7所示,存储器控制中心704在一个或多个中央处理单元708(CPU)和系统存储器710之间提供互连/中心。
ICH 706在系统内的各种外围器件(例如键盘718、磁盘驱动器724、扫描仪722和/或鼠标720)之间提供互连。此外,外部总线及其代理(例如外围器件互连(PCI)总线712和PCI代理714),通过与ICH 706互连经中心接口702而与存储器710和CPU 708间接互连,而不是与存储器控制中心704直接互连。
通过用中心接口来将存储器控制中心704与ICH 706直接互连,提供了对I/O器件和CPU/存储器子系统之间访问的改进(例如更大的带宽、协议独立,以及更少的等待时间)。此外,中心接口还可以通过为I/O构建块提供主干而增加计算机系统的可扩展性(例如,从基础桌面平台升级到高端桌面平台或工作站平台)。
在另一实施例中,CPU和MCH集成在一个半导体单元730上,其中该半导体单元730通过中心接口而耦合到ICH。在另一个实施例中,MCH和图形单元732(例如控制/加速器)集成在一个半导体单元730上,其中该半导体单元730通过中心接口而耦合到ICH。在另一个实施例中,MCH、图形单元732和CPU集成在一个半导体单元730上,其中该半导体单元730通过中心接口而耦合到ICH。
一个这种系统的事务、协议和物理层在1999年10月26日提交的美国专利申请No.09/428,134“Method and Apparatus for an Improved InterfaceBetween Computer Components”(计算机器件间改进接口的方法和装置)中进行了描述,该专利申请已被转让给本申请的受让人。
上述技术可被实现为在计算机系统(例如机顶盒、录像机等)的存储器中存储并执行的一组指令。或者,用于执行上述方法的指令可以被存储在包括磁盘和光盘在内的其它机器可读介质上。例如,本发明的方法可以被存储在机器可读介质上,所述机器可读介质例如是磁盘和光盘,可通过磁盘驱动器(或机器可读介质驱动器)来访问。此外,可以通过数据网络,将所述指令以编译和链接后版本的形式下载到计算设备中。
或者,用于执行上述方法的逻辑可以通过另外的计算机和/或机器可读介质来实现,所述介质例如是诸如大规模集成电路(LSI)、专用集成电路(ASIC)之类的分立硬件器件,诸如电可擦除可编程只读存储器(EEPROM)之类的固件;以及电、光、声和其它形式的传播信号(例如载波、红外信号、数字信号等);等等。
虽然已参照具体示例性实施例对本发明进行了描述,但是显然,可以对这些实施例进行各种修改和变化,而不脱离本发明更广的精神和范围。因此,应将本说明书和附图看作是说明性而非限制性的。
权利要求
1.一种系统,包括发送器,用于发送包括差错校验符号在内的数据分组;第一计数器,其耦合到所述发送器,并包括一个计数值,该计数值随每个所发送的数据分组而增加以产生第一序号,该第一序号用于生成所述差错校验符号。
2.如权利要求1所述的系统,还包括接收器,用于接收所述数据分组;和第二计数器,其耦合到所述接收器,所述第二计数器随每个所接收的数据分组而增加以产生第二序号,该第二序号用于解码所述循环冗余校验。
3.如权利要求2所述的系统,其中如果所述接收器使用所述第二序号解码所述差错校验符号失败,则所述接收器向所述发送器发送指示数据分组失败的第一消息。
4.如权利要求3所述的系统,其中所述第一消息包括所述第二序号。
5.如权利要求4所述的系统,其中所述发送器重发与所述第二序号相对应的数据分组。
6.如权利要求3所述的系统,还包括用于存储所发送的每个数据分组的拷贝的缓冲器。
7.如权利要求6所述的系统,其中,如果成功将所述循环冗余校验解码,则所述接收器向所述发送器发送第二消息。
8.如权利要求7所述的系统,其中所述缓冲器是先进先出缓冲器。
9.如权利要求8所述的系统,其中一旦接收到所述相应的第二消息,就删除所述数据分组的拷贝。
10.如权利要求9所述的系统,其中当接收到所述第一消息时,就重发所述先进先出缓冲器中的下一数据分组。
11.如权利要求2所述的系统,其中可以同时将所述第一计数器和所述第二计数器复位到同一数字。
12.如权利要求2所述的系统,其中所述第一序号包括在所发送的数据分组中。
13.一种方法,包括将耦合到接收器的接收分组计数器与耦合到发送器的发送分组计数器同步;从所述发送器接收数据分组,该分组包含差错校验符号;从所述接收分组计数器读取接收序号;并且使用所述接收序号,将所述差错校验符号解码。
14.如权利要求13所述的方法,还包括将确认信号发送回所述发送器。
15.如权利要求14所述的方法,其中如果所述差错校验符号正确,则所述确认信号确认对所述数据分组的接收。
16.如权利要求14所述的方法,其中如果所述差错校验符号不正确,则所述确认信号指示接收所述数据分组失败。
17.如权利要求13所述的方法,还包括在已记录了每个差错校验符号之后,增加所述接收分组计数器。
18.如权利要求13所述的方法,还包括从所述发送分组计数器读取发送序号;使用所述发送序号,将所述差错校验符号编码;并且将所述数据分组发送给所述接收器,所述分组包含所述差错校验符号。
19.如权利要求13所述的方法,其中所述数据分组包括所述发送序号。
20.如权利要求13所述的方法,还包括将所述数据分组存储在耦合到所述发送器的缓冲器中。
21.如权利要求20所述的方法,还包括在来自所述接收器的确认信号确认了所述分组的差错校验符号已被解码之后,从所述缓冲器中删除所述数据分组。
22.如权利要求13所述的方法,还包括在已发送了每个差错校验符号之后,增加所述发送分组计数器。
23.一种机器可读存储介质,其确实地包含指令序列,该指令序列可由机器执行以执行包括如下步骤的方法将耦合到接收器的接收分组计数器与耦合到发送器的发送分组计数器同步;从所述发送器接收数据分组,该分组包含差错校验符号;从所述接收分组计数器读取接收序号;并且使用所述序号,将所述差错校验符号解码。
24.如权利要求23所述的机器可读存储介质,还包括将确认信号发送回所述发送器。
25.如权利要求23所述的机器可读存储介质,还包括在已记录了每个差错校验符号之后,增加所述接收分组计数器。
26.如权利要求23所述的机器可读存储介质,还包括从所述发送分组计数器读取发送序号;使用所述序号,将所述差错校验符号编码;并且将所述数据分组发送给所述接收器,所述分组包含所述差错校验符号。
27.如权利要求23所述的机器可读存储介质,还包括将所述数据分组存储在耦合到所述发送器的缓冲器中。
28.如权利要求27所述的机器可读存储介质,还包括在来自所述接收器的确认信号确认了所述分组的差错校验符号已被解码之后,从所述缓冲器中删除所述数据分组。
29.如权利要求27所述的机器可读存储介质,还包括在已发送了每个差错校验符号之后,增加所述发送分组计数器。
全文摘要
本发明描述了一种当在发送器和接收器之间传输分组时,使用诸如循环冗余校验(CRC)之类的差错校验符号来检测分组丢失的系统和方法。在发送器和接收器上有计数器,两个计数器起初彼此同步。使用发送器的计数器所提供的序号来生成CRC。当发送分组时,发送器的计数器增加。接收器使用来自接收计数器的序号来将所述CRC解码。如果所有分组都被接收到,则用于解码的序号应该与用于编码的序号相匹配。因此,如果CRC未正确解码,则分组已丢失或出错。将消息发送到发送器。接收计数器不会增加,直到正确的分组被接收到并解码。
文档编号H04L1/16GK1561602SQ02819071
公开日2005年1月5日 申请日期2002年9月26日 优先权日2001年9月28日
发明者埃里克·韦黑格 申请人:英特尔公司