专利名称:用于pci express设备的并行数据完整性校验的方法
技术领域:
本发明涉及高速串行总线上的分组传输,更具体地,涉及减少PCI Express总线中的分组传输的时延。
背景技术:
外围组件互连(PCI) express总线是最近开发的用于在计算机系 统和其它电子设备中传输数据的高速互连。之前已有的PCI总线(包 括PCI2.2或PCI-X)不能满足当前的处理器所需要的日益增长的I/O 带宽。PCI Express致力于解决当前的软件应用(例如在平台硬件和I/O 子系统上的视频点播和音频重分发)所提出的高需求。
此外,由于PCI Express不是以设定的速率来对所有数据进行路 由的单个并行数据总线,因此PCI Express与先前的PCI总线不同。 相反地,PCI Express是串行、点对点线接、分别计时的"通道",每 个通道包括两对用于传送数据上行流和下行流的数据线路。该双向串 行连接以分组的方式来传输数据。该分组具有PCIExpressl.Oa规范中 记载的预定义的类型和结构。
PCI Express体系结构还包括三个协议层。在每层中执行PCI Express分组处理中的指定任务。这三层包括事务层(transaction kyer)、 数据链路层和物理层。第一层是物理层,其中执行去往和来自串行比 特流的符号的编码和解码。通过将成帧符号前加(pre-pending)和追 加(appending)到从数据链路层接收的分组来完成该过程。在物理层 中使用该附加的数据,以计算通过串行链路所传输的数据。
第二层包括数据链路层,其中处理更高级的功能和数据完整性。 在数据链路层中,在发送每个分组之前将附加的信息前加和追加到该 分组,并在接收该数据时对该数据进行检验。该信息包括循环冗余校
验(CRC)和序列号。CRC用于对已经发生的任何比特误差进行检测, 而序列号指示了所发送的分组的顺序,以允许不丢失分组的检验。
在典型的PCI Express总线中,可以在接收到数据链路层中的分 组的报头的前两个字节时,检验该分组的序列号;然而,由于使用事 务层分组的全部字节来计算CRC值,因此直到接收了整个分组时才能 对CRC进行校验。 一旦接收了整个分组,则将所计算的CRC与当前 在分组中的CRC进行比较。如果CRC相匹配且序列号是下个期望的 序列号,则无差错地接收了该分组。然后将该分组转发至事务层用于 附加的检验。
PCI Express体系结构的第三层包括事务层。在事务层中执行对分 组的编码和解码。在从数据链路层接收到分组时,对分组本身执行附 加的更高级的校验。校验包括针对有效或允许的分组类型、适当的处 理类别、以及适当长度编码的多个校验。传统地,在事务层中,在将 分组转发给主机设备之前对分组格式进行检验。在这种方法中,对整 个分组进行缓冲,以检验实际分组长度与分组报头中编码的长度是否 匹配,以及分组报头的摘要(digest)字段是否对应于分组尾部的摘要。
上述用于接收分组的协议的一个局限性是,在数据链路层中完全 地缓冲每个分组,以执行CRC校验,并且在事务层中完全地缓冲每个 分组,以执行长度校验。因此,由此引起的这里所述的事务层和数据 链路层中的分组时延至少是对整个分组进行缓冲所需要的时间的两 倍。另外的缺点是,上文所描述的方法利用了两个缓冲器,每个缓冲 器具有至少足够用于针对数据链路层和事务层中的每一层的可接受的 最大分组尺寸的存储器,这导致了设计的尺寸和成本的增加。
在作者为Amagai等的加拿大专利申请CA 2283999A1中讨论了 一 种减少分组处理的时延的方法。其中所讨论的分组处理方法公开了一 种用于通过多个层来交换分组的方法,其中将每个分组中与第二层和 第三层相关的部分存储在多端口共享存储器中。然后通过第二层和第 三层中的每一层以无干扰的方式来访问多端口共享存储器。遗憾的是, 上述方法具有包括使用多端口 RAM的复杂度和开销的局限性。
提供一种用于在支持减少的时延的PCI Express总线中对分组进行接收和差错校验的方法将是有益的。
发明内容
本发明有益地提供了一种在高速串行接口中处理分组的方法,包 括在多个层中的第一层处接收分组,其中所述第一层包括所述高速 串行接口的链路;通过所述多个层处理所述分组;以及并行于与所述 多个层中的一个层相关的分组差错校验,执行与所述多个层中的另一 层相关的分组差错校验。
根据本发明,提供了一种在高速串行接口中处理分组的方法,包 括在多个层中的第一层处接收分组,其中所述第一层包括所述高速 串行接口的链路;在第一时间段期间,执行与所述多个层中的第二层 相关的分组差错校验;以及在第二时间段期间,将所述分组的至少一 部分传送至所述多个层中的第三层,所述第二时间段的至少一部分与 所述第一时间段相重叠。
根据本发明的另一方面,提供了一种设备,包括用于通过多个 层来接收和发送分组数据的分组处理设备,所述分组处理设备包括 位于所述多个层中的第二层中的第一分组存储器,用于在第一时间段 期间存储所述分组的至少第一部分,所述分组的至少第一部分小于最 大接收分组尺寸;以及位于所述多个层中的第三层中的第二分组存储 器,用于在同一第一时间段期间存储所述分组的至少一部分。
根据本发明,提供了一种设备,包括物理层,包括用于接收来 自兼容PCI Express的通信介质的数据的PCI Express接口 ,所述数据 包括分组;数据链路层,用于检验所述分组中的CRC和序列号;以及 事务层,用于接收来自所述数据链路层的分组以及用于处理来自所述 数据链路层的分组,所述事务层用于与所述数据链路层相并行地处理 所述分组的至少一部分。
现在将结合以下附图对本发明的示例性实施例进行描述,其中
图1示出了根据现有技术的分组的发送通路和接收通路;
图2a是示出了根据现有技术在物理层对分组进行接收的过程的 示意性图示;
图2b是示出了根据现有技术在数据链路层对分组进行接收的过 程的示意性图示;
图2c是示出了根据现有技术在事务层对分组进行接收的过程的 示意性图示;
图3是示出了 PCI Express设备的事务层301和数据链路层302 中的分组检验的现有技术过程;
图4a示出了根据现有技术的PCI Express中通过数据链路层进行 分组传输的过程;
图4b示出了根据现有技术的PCI Express中通过事务层进行分组 传输的过程;
图4c示出了根据本发明的实施例的PCI Express中通过数据链路 层和事务层进行分组传输的过程;以及
图5示出了根据本发明的实施例的并行数据完整性校验的过程。
具体实施例方式
参照图1,示出了用于在物理层、数据链路层和事务层中的每一 层之间接收和发送分组的方法的流程图。如图1所示,PCI Express是 一种双向协议,包括发送数据通路和接收数据通路。例如,对于接收 通路,从PCI Express串行链路接收分组,并通过物理层、数据链路层 和事务层来传递分组。如前所述,在物理层中处理去往和来自串行比 特流的符号的编码和解码,而在数据链路层中检验总体数据完整性。 此外,在事务层中检验分组,并在将分组传送给主机设备之前执行分 组的编码和解码。
参照图2a、 2b和2c,示出了典型的现有技术过程,过程示出了 所接收的分组200如何通过PCIExpress设备的各层。如这些图示所示, 在至主机设备的沿路的每一层计算分组200的各部分。图2a示出了由 物理层202接收到的分组200。在物理层202中,识别输入数据流中 的开始218和结束分组成帧符号208。去除这些成帧符号,并将成帧符号之间的数据向上传递给数据链路层204用于进一步的处理。
图2b是将分组信息传递给数据链路层204的过程的简化流程图。 如前所述,在数据链路层204中通过检查分组序列号216是否与下个 期望的序列号相匹配以及根据分组报头和分组的数据部分中的字节来 计算CRC值,来检验总体数据完整性。在数据链路层204中,将位于 分组尾部的分组CRC210与数据链路层计算的CRC值进行比较,以检 验数据完整性。如果序列号216与期望的序列号相匹配,并且分组的 CRC 210与所计算的CRC相匹配,则从分组200去除序列号216和 CRC 210字段,并将分组的报头214和数据212部分按顺序地传送给 事务层216,用于进一步的处理。图2c示出了通过事务层206来接收 分组信息的过程。在此处,在事务层中执行至少包括分组长度检验的 后续校验。
图3示出了在PCI Express设备的事务层301和数据链路层302 中执行的分组检验和缓冲的现有技术过程。如先前参照图2a-2c所述 的,在事务层301和数据链路层302中独立地执行预定的分组校验; 每一层使用分组缓冲器304和306。这里,每个缓冲器的尺寸至少与 最大尺寸的分组相等。此外,在允许将所缓冲的分组传送至事务层301 之前,使用分组来执行所有数据链路层校验。由于每一层中与分组校 验相关的PCI Express规则,导致事务层301与数据链路层302的串行 化。这些规则指示了检测到将要被数据链路层302破坏的分组不应影 响与事务层301相关的状态或寄存器。
因此,由于在数据链路层302中完全地缓冲每个分组以执行CRC 校验308,并在事务层301中完全地缓冲每个分组以至少执行长度校 验312,由此引起的事务层和数据链路层中的分组时延至少是对整个 分组进行缓冲所需要的时间的两倍。
因此,这就是上文中所讨论的方法中的缺点,即,用于事务层和 数据链路层的层校验导致了针对每个接收的分组的缓冲。这导致了分 组时延的增加,分组时延随总分组尺寸而线性增加。例如,在没有严 格的实时需求的系统中,这种时延的增加是可以接受的,但是在需要 通过PCI Express链路来对数据进行高速访问的系统中,优选地对时延进行最小化。此外,上述方法在数据链路层302和事务层301中重复 了与可接受的最大分组尺寸相等的缓冲器。这种额外的存储增加了设 计实施方式的尺寸和成本。
图4a和4b示出了通过根据现有技术的PCI Express中的数据链 路层416和事务层418来进行分组传输的过程400和401。这些图示 与先前讨论的图3的描述相一致。参照图4a,示出了已经对其CRC 进行了校验的输入分组406,将分组存储在数据链路层存储器402中。 如图4b所示,在对CRC进行检验后,将分组传送给事务层418中的 存储器位置404。在该过程中,由于通过事务层418来接收分组406, 因此对所接收的分组406的内容进行校验以确保所有的字段包含合法 的值。因此,在数据链路层416和事务层418中的每一层中,在将分 组传递给下一层之前,对分组进行完整地缓冲。
参照图4c,示出了根据本发明实施例用于接收PCI Express分组 的过程403。根据本实施例,示出了当经过更小的数据链路层存储器 410而传递至事务层存储器412时,所接收的分组414的一小部分。 因此,同时执行数据链路层426分组校验和事务层428分组校验,而 不等待与之前的层相关的分组校验的完成。此外,仅仅将整个分组的 一部分存储在数据链路层426的存储器中。根据本实施例,图4c中的 分组校验包括与数据链路层426相关的CRC和序列号检验,以及与事 务层428相关的至少分组长度检验和针对有效分组类型的多个校验。 如将在图5进一步示出的,通过与事务层并行地执行数据链路层校验, 消除了在事务层428和数据链路层426中的每一层中针对每个接收的 分组414的双缓冲器的需要。
例如,根据本实施例,取决于基础体系结构,将所接收的分组414 的时延减少了大约50°/。。这种时延的减少导致了整个系统的功率消耗 的减少。例如,如果处理器正等待PCI Express链路的处理完成,则更 快的响应时间(减少的时延)允许一旦处理完成处理器就返回到更低 的功率状态。则更低功率的需求导致了能量成本的节约和电池组件成 本的减少。
此外,本发明的实施方式使用与现有技术相比较少的逻辑来执行
与图4a和图4b中描述的现有技术等价的功能。例如,在典型的PCI Express核中实施本发明时,大约的改进是总面积的2-5%的减少。最 终结果是以更少硅面积形式的成本节约。此外,由于需要更少的逻辑, 将呈现更少的制造缺点,这导致了更高的IC产量。此外,对于维持相 同的功能,减少的逻辑典型地需要减少的功率。
图5示出了根据本发明实施例的用于并行数据完整性校验的过 程,过程与先前讨论的图4c的描述相一致。参照图5,每个输入分组 在没有附加的时延或缓冲的情况下经过数据链路层502到达事务层 504。在数据链路层502中执行所有序列号和CRC校验,而不对至事 务层504的分组传输进行延迟。因此,在事务层504中,与数据链路 层502分组校验相并行地执行必需的事务层分组校验。
根据本发明的本实施例,一旦完成了所有的数据链路层502校验, 则数据链路层502将状态值510转发给事务层504。根据如果接收的 分组的序列号与期望的序列号相匹配、以及在数据链路层502中计算 的所接收分组的CRC与分组中已有的CRC字段相同,状态值510是 "DLGood"。相反地,取决于接收的分组的至少一个序列号与期望的 序列号不相匹配、并且计算的所接收的分组的CRC与分组中的CRC 字段中的值不相同,则状态值510是"DL Bad"。将状态值510按顺 序地转发给事务层504。
然后将信息与事务层504校验相结合,以控制事务层504中的缓 冲器514。例如,当至少一个状态值"510"是"DLBad"并且先前定 义的多个事务层校验显示了事务层分组中的差错,以使层502或504 确定分组是错误的分组时,则丢弃该分组。
然而,在一些情况中,延迟的数据链路层502分组校验可能导致 将潜在破坏的分组传送给事务层504。传统的PCI Express规范定义了 如果较低级别的层(例如数据链路层)确定了分组被破坏,则较高级 别的层(例如事务层)不必进行附加地检测或记录日志。因此,根据 本实施例,将最小数量的附加逻辑添加到事务层504,以忽略具有其 它层中所检测到的差错的任何分组。例如,尽管部分并行地执行数据 校验,在检测到差错时,仍然清除事务层504中的分组,并将该层中的寄存器返回到寄存器在接收分组之前的值。这是通过确保在接收到
来自数据链路层502的检验之前寄存器不变化来实现的。可选地,这 可以通过寄存器数据的推入(push)和弹出(pop)来实现。
本领域中的技术人员应当理解,这里所描述的本发明的实施例显
而易见地支持了本发明在实施了 PCI Express链路的多个设备中以及 在包括源点、终点、交换机以及网桥结构的多个结构中的使用。例如, 可以在需要相对高的带宽连接的多个应用(包括个人计算机、笔记本 计算机、电视、机顶盒、卫星接收机、打印机以及扫描仪)中使用PCI Express链路。
在不背离本发明的精神或范围的情况下,可以设想到诸多其它的 实施例。
权利要求
1、一种在高速串行接口中处理分组的方法,包括在多个层中的第一层处接收分组,其中所述第一层包括所述高速串行接口的链路;通过所述多个层处理所述分组;并行于与所述多个层中的另一个层相关的分组差错校验,执行与所述多个层中的一个层相关的分组差错校验。
2、 根据权利要求1所述的方法,其中,所述方法与PCI Express 标准相兼容。
3、 根据权利要求1或2所述的方法,其中,所述多个层包括物 理层、数据链路层和事务层。
4、 根据权利要求3所述的方法,其中,并行执行的差错校验是 所述数据链路层的差错校验和所述事务层的差错校验。
5、 根据权利要求1到4之一所述的方法,其中与一个层相关的 分组差错校验包括:将所述分组的CRC字段与计算的所述分组的CRC 进行比较;将所述分组的序列号与所期望的所述分组的序列号进行比 较;以及根据所述分组的CRC字段与计算的所述分组的CRC的比较 和所述分组的序列号与所期望的所述分组的序列号的比较,将第一状 态值提供给另一层。
6、 根据权利要求5所述的方法,包括根据执行与另一层相关 的分组差错校验,将第二状态值提供给另一层;以及,在所述第一状 态值和第二状态值中的至少一个指示了所述分组中的差错时,丢弃所 述分组。
7、 根据权利要求6所述的方法,其中,当所述第一状态值和第 二状态值中的每个状态值未指示所述分组中的差错时,将所述分组传 送至主机设备。
8、 根据权利要求5所述的方法,包括在所述第一状态值指示 所述分组中的差错时,使得另一层返回到在接收到所述分组之前的状 态。
9、 根据权利要求1到8之一所述的方法,包括在将所述分组 的至少一部分传送至另一层之前,通过位于所述层中的先进先出存储 器来处理所述分组的一部分。
10、 根据权利要求1到9之一所述的方法,不同时将整个所述分组存储在所述层的存储器中。
11、 一种在高速串行接口中处理分组的方法,包括在多个层 中的第一层处接收分组,其中所述第一层包括所述高速串行接口的链 路;在第一时间段期间,执行与所述多个层中的第二层相关的分组差 错校验;以及在第二时间段期间,将所述分组的至少一部分传送至所述多个层中的第三层,所述第二时间段的至少一部分与所述第一时间 段相重叠。
12、 根据权利要求11所述的方法,包括在第三时间段期间, 执行与所述多个层中的第三层相关的分组差错校验,所述第三时间段 的至少一部分与所述第一时间段和第二时间段相重叠。
13、 一种设备,包括用于通过多个层来接收和发送分组数据 的分组处理设备,所述分组处理设备包括位于所述多个层的第二层 中的第一分组存储器,用于在第一时间段期间存储所述分组的至少第 一部分,所述分组的至少第一部分小于最大接收分组尺寸;以及位于 所述多个层的第三层中的第二分组存储器,用于在同一第一时间段期 间存储所述分组的至少一部分。
14、 一种设备,包括物理层,包括用于接收来自兼容PCI Express 的通信介质的数据的PCI Express接口,所述数据包括分组;数据链路 层,用于检验所述分组中的CRC和序列号;以及事务层,用于接收来自所述数据链路层的分组以及用于处理来自所述数据链路层的分组,所述事务层用于与所述数据链路层相并行地处理所述分组的至少一部分。
15、 根据权利要求14所述的设备,其中,所述数据链路层和事 务层中的每一层包括存储器存储位置,所述数据链路层中的存储器存 储位置用于存储少于通过数据链路层接收的整个分组的一部分分组。
16、 根据权利要求14或15所述的设备,包括通信电路,用于在所述数据链路层与所述事务层之间通信指示当前分组的有效性的数 据。
17、根据权利要求14到16之一所述的设备,其中,所述事务 层包括电路,用于在从数据链路层接收到指示当前的分组无效的信号 时,使得所述事务层返回到处理当前分组之前的事务层状态。
全文摘要
本发明公开了一种用于支持PCI Express的设备和方法。物理层具有PCI Express接口,用于接收来自兼容PCI Express的通信介质的数据。该数据为分组的形式。公开了用于对所接收的分组中的CRC值(506)和序列号(508)进行检验的数据链路层(502)。公开了用于接收来自数据链路层的数据并对数据进行处理的事务层(504)。事务层(504)与数据链路层(502)相并行地对所述分组数据的至少一部分进行处理(512)。
文档编号H04L29/08GK101204070SQ200680022391
公开日2008年6月18日 申请日期2006年6月21日 优先权日2005年6月21日
发明者凯西·伍德, 鲍勃·凯撒 申请人:Nxp股份有限公司