通信协议中分组长度的灵活性的实现的制作方法

文档序号:7705973阅读:156来源:国知局
专利名称:通信协议中分组长度的灵活性的实现的制作方法
通信协议中分组长度的灵活性的实现
背景技术
计算机系统包括许多组件和元件,它们典型地经由总线或互连通路耦
接。以前,输入/输出(IO)设备通过称为外围部件互连(PCI)的传统多路并行总线结构耦接在一起。最近,被称为PCI-Express (PCIe)的新一代IO总线已被用于促进具有串行物理层通信协议的设备之间的快速互连。
PCIe结构包括用于在设备之间进行通信的分层协议。例如,物理层、链路层和事务层构成了 PCIe的协议栈。PCIe链路构建在称为通道(lane)的专用单向串行点对点连接对的周围。设备间的链路包括多条通道,例如1条、2条、16条、32条等等。当前的PCIe规范,版本号为2.0的PCI Express 基本规范(发布于 2007 年1月17日)可从http:〃www.pcisig.com/specifications/pciexpress/获取。
PCIe协议使用基于信用(credit-based)的流控制机制来通过链路传输分组。接收端通告与接收端中可用的缓存数量相等的信用。不允许发送端发出会消耗比接收端已经通告的信用更多的信用的事务。要求发送端的请求头部中提供的净荷长度与所提供的数据净荷量精确匹配并且小于或等于接收端可用的信用,以便为该事务服务。这不必要地限制了数据通信中的灵活性。


图1是根据本发明一个实施例的系统的方框图。图2A是根据本发明一个实施例的数据分组传输的例子。图2B是根据本发明一个实施例的三个分组的例子,这三个分组是数据流的一部分。
图3是根据本发明一个实施例的方法流程图。
具体实施例方式
4参考图1,示出了根据本发明的一个实施例的系统的方框图,该系统包
括经由串行链路耦接至控制器中心(controllerhub)的多个设备。系统100 包括耦接至控制器中心115的处理器105和系统存储器110。处理器105 包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器 或其它处理器。处理器105通过前端总线(FSB)106耦接至控制器中心115。 在一个实施例中,如下面描述的,FSB106是串行点对点(PtP)互连通路。
系统存储器110包括任何存储设备,例如随机访问存储器(RAM)、非 易失性(NV)存储器或系统100中的设备可访问的其它存储器。系统存储 器110通过存储器接口 116耦接至控制器中心115。
在一个实施例中,控制器中心115是PCIe互连体系中的根集线器或根 控制器。控制器中心115的例子包括芯片组、内存控制器中心(MCH)、北 桥、输入/输出控制器中心(ICH)、南桥和根控制器/集线器。这里,控制 器中心115通过串行链路119耦接至交换器/桥120。输入/输出模块117和 121,也被称为接口/端口 117和121,包括/实现分层的协议桟以提供控制 器中心115和交换器120之间的通信。在一个实施例中,多个设备能耦接 至交换器120。多个实施例也可应用在处理器和芯片组集成在相同组件中的 场合。而且,在其中,这项技术不需要PCIe协议的新修订,且可由PCIe 2.0、 1.1兼容设备等实现。因此,多个实施例可被应用在任何使用PCIe互连进 行通信的场合。
交换器120路由设备125的上行流(即,向上层至控制器中心115)以 及下行流(即,从控制器中心115向下层至设备125)的分组/消息。IO模 块122和126实现分层的协议桟,用于进行交换器120和设备125之间的 通信。设备125包括耦接至电子系统的任何内部或外部设备或组件,例如 IO设备、网络接口控制器(NIC)、插卡、音频处理器、网络处理器、硬驱 动器、存储设备、监视器、打印机、鼠标、键盘、路由器、便携式存储设 备、火线设备、通用串行总线(USB)设备、扫描仪以及其它输入/输出设 备。
图形加速器130也通过串行链路132耦接至控制器中心115。在一个实 施例中,图形加速器130耦接至MCH, MCH耦接至ICH。交换器120以 及相应地10设备125则耦接至ICH。 IO模块131和118也实现分层的协
5议栈,用于图形加速器130和控制器中心115之间的通信。
在一个实施例中,PCIe协议栈可包括事务层、链路层和物理层。在一个实施例中,事务层用于提供设备的处理核心和互连体系结构之间的接口,例如数据链路层和物理层的接口。在这点上,事务层的主要作用是对多个分组(即,事务层分组,或TLP)的组合和分解。PCIe实现分离的事务,即以时间分隔的具有请求和响应的事务,从而允许链路在目标设备收集用于响应的数据时可以承载其它流量。
此外,PCIe使用基于信用的流控制。在这个方案中,设备在事务层中通告每个接收缓存的初始信用量。位于链路另一端的外部设备,例如图1中的控制器中心115,计数每个TLP消耗的信用证数目。如果一个事务没有超出信用限制,则可以传输该事务。 一旦接收到响应,则恢复信用量。信用方案的优点在于倘若没有超过信用限制,则信用恢复的延时不会影响性能。
链路层作为事务层和物理层之间的中间层。在一个实施例中,数据链路层的作用是提供用于在两个组件之间通过链路交换TLP的可靠机制。链路层的一端接受由事务层组合的TLP,应用标识符,计算和应用错误检测码(即,循环恢复码(CRC)),并提交经修改的TLP到物理层,以通过物理链路传输给外部设备。
在一个实施例中,物理层物理地传输分组给外部设备。物理层包括发送部分和接收部分,发送部分准备用于传输的外发信息,接收部分用于在将接收的信息传输给链路层之前识别和准备接收的信息。物理层包括发送端和接收端。提供符号给发送端,发送端串行化该符号并将其发送到外部设备。从外部设备提供串行化的符号给接收端,接收端将接收的信号转换成比特流。解串行化该比特流并将其提供给逻辑子模块。在一个实施例中,采用8bA0b传输码,其中发送溜收10-比特符号。此外,在一个例子中,接收端也提供从输入的串行流中恢复的符号时钟。如上所述,虽然参考PCIe协议桟的特定实施例讨论了事务层、链路层和物理层,但不是以此限定分层的协议栈。事实上,可以包括/实现任何分层的协议。
根据PCIe协议,将下面的规则应用到打算发起具有数据的事务的发送端(1)发送端必须发出具有的数据长度等于或小于配置的最大净荷大小的请求;(2)发送端必须保证请求的长度小于或等于接收端中可用于服务 该请求的信用量;(3)发送端必须保证一旦开始传输分组,其能提供/流式 传输在请求的长度字段中指示的数据,换句话说,发送端不能停顿分组传 输,因此发送端必须缓存数据或保证其能以分组速率流式传输数据;以及 (4)在当前数据分组能被发出之前,任何高优先级的分组必须等待以完成 当前数据分组。然而,在一些实现中可能以"EndBad"终止符号终止一个 分组,在这种情况下,接收端丢弃任何已传输的数据。
为了改善这个协议的灵活性,多个实施例定义了能允许的分组断开边 界。以这种方式,允许发送端在能允许的分组断幵边界处终止请求。然而 本发明的范围不被限定于此,能允许的分组断开边界可以是64字节(B)、 或64B的倍数、或其它可配置的量。 一些实施例也可包括流控制和长度协 议的增强,以使得能进行这样的不同长度的传输。发送端能按照PCIe分组 终止规则终止分组,插入CRC以及普通的分组结束符号以终止该分组。
在一些实施例中,能够增强长度规则,使得长度字段指示发送端打算 传输的净荷大小,但是可以在能允许的分组断开边界处终止分组。例如, 发送端可以发起具有指示传输大小为256B的长度的分组传输,但是可以在 传输了净荷数据的前128B后就终止该分组。如果传输成功,即,没有发生 任何传输错误,则接收端使用已成功传输的该分组的前128B,而不是按照 "EndBad"过程那样丢弃该数据。发送端可以将余下的净荷作为另一个新 发出的事务来传输;不要求接收端保存在先接收的事务的历史。发送端可 以发起新的事务以便完成原始打算的长度等于128B的净荷并提供余下的 净荷,或者发送端可以开始具有开始于在先分组断开边界的不同长度的新 分组,或者可以发起新的高优先级分组。
在一些实施例中,能够增强流控制规则,使得只要发送端具有达到能 允许的断开边界的信用且发送端能保证数据被流式传输,则允许发送端发 起事务处理。如果接收端释放了达到下一个能允许的分组断开边界的信用 量,倘若有足够的信用量是可用的且能不停顿的提供数据,则允许发送端 超过当前能允许的分组断开边界继续它的传输,达到下一个能允许的分组 断开边界。
因此多个实施例提供了协议的增强,以允许发送端指定净荷长度,该净荷长度可以超过在净荷中实际提供的数据量。净荷中提供的数据量必须保证没有超出接收端分配的信用量。可在指定的分组断开边界处终止/暂停
分组。使用这个方案,允许大的分组,例如4千字节(KB)的分组(长度=4KB),在断开边界处终止,以便插入高优先级分组。
多个实施例可进一步加强这个协议增强以便(1)优化接收端缓存,从存储器流式传输数据;(2)基于信用恢复来改善链路利用;以及(3)优化发送端的存储和转发机制,从而能在PCIe互连上流式传输数据。相应地,一旦发送端已经存储的数据等于断开边界、或者发送端能保证至少达到断开边界而不停顿地流式传输数据、且发送端具有足够的所分配的接收端信用,发送端就能够发起对大分组的传输。当接近断开边界时,如果发送端已经存储的数据达到下一个断开边界、或者发送端能保证不停顿地流式传输数据直到下一个断开边界、且发送端已经具有足够的所分配的接收端信用,则发送端可继续传输数据净荷。如果存储的数据小于断开边界、或者不能保证流式传输的数据达到断开边界、或者缺乏接收端信用,则发送端终止该分组。
因此多个实施例能够实现优化接收端缓存,改善链路的使用,并优化发送端缓存。相反,传统的PCIe机制更严格,并要求请求者在接收到值得信任的净荷之前延迟传输请求,且不允许"动态地"优化。使用本发明的实施例,能在PCIe互连上流式传输来自存储控制器的数据。完成(例如,由IO设备发出的存储器读取)能够指示完成净荷等于最大净荷大小并优化完成净荷。这使得将返回的完成至少等于64B且达到最大净荷大小,从而改善用于读取完成的链路使用。
现在参考图2A,所示的是根据本发明一个实施例的数据分组200的传输的例子。如图2A所示,发送端可以传输分组205,原始打算具有如分组205的头部中指示的256字节的净荷长度,该分组205提早终止。更具体地,在达到64字节的第一个能允许的断开边界后终止分组205。因此,如图2A所示,分组205包括幵始部分、头长度部分、净荷部分(其对应于能允许的断开边界的长度)、净荷部分后面的端对端CRC (ECRC)、端对端CRC后面的终止序列,终止序列包括链路CRC部分和结束部分。注意,可以使用两种CRC协议,用于所有分组的链路CRC和用于端对端地保护分组的可选地ECRC。区别如下链路采用链路CRC来保护从发送端经由链路到 接收端的分组传输,以及事务层采用可选地ECRC (如果支持)来保护分 组,且ECRC仅仅被最终目的地所检查,该最终目的地可能有多跳那么远。 该检査也由最终目的地的事务层执行。在传输这个已终止分组205后,传 输另一分组210以包括已终止分组205的余下部分。更具体地,分组210 被确定为具有192字节的净荷长度(g卩,对应于己终止分组205的分组长 度的余下部分)。因此,如图2A所示,分组210传输192B的净荷,净荷 后是ECRC部分和结束部分。
通过提供具有终止一个分组的能力的发送端,多个实施例可以在己终 止分组后插入高优先级的分组,接着在高优先级的分组之后可以发送该已 断开的分组的余下部分。如图2B所示,3个分组是数据流250的一部分, 即已终止分组255、高优先级分组260和余下部分分组265。在图2B中所 示的实施例中,在已终止分组255终止后,高优先级分组260仅包括开始 部分、头部分、ECRC以及结束部分(即,没有数据的高优先级分组)。在 传输了这个高优先级分组后,发送端随后可以发送余下部分分组265,其提 供了该断幵的分组的余下部分。因此,如图2B所示,余下部分265传输了 数据净荷的余下192B。虽然所示的是图2A和2B的实施例中的这些特定 例子,然而本发明的范围不被限于此。
现在参考图3,所示的是根据本发明一个实施例的方法流程图。如图3 所示,可以使用方法300从发送端传输分组给接收端。特别地,如图3所 示,方法300可以开始于从发送端传输第一分组给接收端(方框310)。这 样的分组可以包括指示了分组长度的头部,在一个实施例中,该分组长度 可以是多个数据部分,每个数据部分对应于能允许的分组断开边界的长度。 例如,头部长度可以是相对长的净荷,如4KB,其中连接发送端和接收端 的互连通路的通信协议可以具有64字节的能允许的分组断开边界。
在传输第一分组期间,发送端,尤其是发送端的事务层或者设备的内 部结构可以选择终止该传输,例如以使得能够插入更高优先级的分组。因 此,如图3的方框320所示,第一分组可以在能允许的分组断开边界被终 止。终止第一分组时,发送端可以发送错误编码部分(例如ECRC)以及 结束信号以指示终止第一分组。随后,发送端可以从发送端发送第二分组
9给接收端(方框330)。在一个实施例中,第二分组可对应于更高优先级的 分组,该更高优先级的分组可以包括或不包括净荷数据。
仍然参考图3,在传输了第二分组后,可以从发送端传输第三分组给接 收端。在不同的实施例中,这个第三分组可以包括第一分组的余下净荷(方 框340)。例如,假设在传输完第一分组的净荷的2KB部分后,在能允许的 分组断幵边界处终止了第一分组。在这种情况下,第三分组可以包括指示 2K长度的头部分,以及对应的数据净荷可以提供原始打算在第一分组中的 净荷数据的剩余2K。虽然在图3的实施例中示出了这个特定的实现,然而 本发明不被限于此。
多个实施例可减少芯片组的硅面积(footprint)(门数)和端点设计, 以及改善链路带宽的使用,因此提供额外的数据吞吐量,改善了最大可获 得的平台带宽和应用性能。
多个实施例可以代码实现且可被存储在存储介质中,存储介质上具有 指令,这些指令可被用于设计一个执行指令的系统。存储介质可以包括但 不限于任何类型的盘片,包括软盘、光盘、只读光盘(CD-ROM)、可重写 光盘(CD-RW)、磁光盘、半导体设备、磁卡或光学卡、或者其它类型的 适于存储电指令的介质,半导体设备诸如只读存储器(ROM)、如动态随 机访问存储器(DRAM)和静态随机访问存储器(SRAM)的随机访问存 储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编 程只读存储器(EEPROM)。
虽然已经参考有限数量的实施例描述了本发明,本发明的技术人员将 明了可以有很多的修改和变形。期望附加的权利要求覆盖的所有这样的修 改和变形落入本发明的真正精神和范围中。
权利要求
1、一种方法,包括从发送端沿着互连通路传输第一分组给接收端,所述第一分组包括指示第一大小的净荷长度的头部;以及在分组断开边界处终止所述第一分组的传输,所述分组断开边界具有小于所述净荷长度的长度,其中在传输了与所述第一大小的所述净荷长度对应的净荷的第一部分后终止所述分组传输。
2、 如权利要求1的方法,进一步包括在终止所述第一分组后从所述 发送端传输第二分组给所述接收端,所述第二分组具有比所述第一分组更 高的优先级。
3、 如权利要求2的方法,进一步包括在传输了所述第二分组后传输第三分组,所述第三分组包括所述第一分组的所述净荷的余下部分。
4、 如权利要求3的方法,进一步包括在所述接收端中使用所述分组的第一部分,并且不在所述接收端中保持所述第一分组的历史。
5、 如权利要求4的方法,进一步包括当所述发送端具有足够达到所述分组断开边界的信用时传输所述第一分组,其中传输所述第一分组包括 从所述发送端流式传输所述净荷的所述第一部分的数据给所述接收端。
6、 如权利要求l的方法,其中,所述分组断开边界对应于所述互连通路的通信协议的能允许的分组断开边界,其中,所述能允许的分组断开边 界是可配置的。
7、 如权利要求l的方法,其中,终止所述第一分组包括在所述分组断开边界之后传输错误码部分和分组结束符号。
8、 一种设备,包括第一组件,其在点对点(PtP)互连通路上与第二组件通信,其中,所 述第一组件沿着所述点对点互连通路传输第一分组,所述第一分组包括指 示第一大小的净荷长度的头部,并且所述第一组件在分组断开边界处终止 所述第一分组的传输,所述分组断开边界具有小于所述净荷长度的长度, 其中,在传输了与所述第一大小的所述净荷长度对应的净荷的第一部分后 终止所述第一分组的传输。
9、 如权利要求8的设备,其中,所述第一组件在终止所述第一分组后传输第二分组,所述第二分组具有比所述第一分组更高的优先级。
10、 如权利要求9的设备,其中,所述第一组件在传输了所述第二分 组后传输第三分组,所述第三分组包括所述第一分组的所述净荷的余下部 分。
11、 如权利要求9的设备,其中,所述第二组件使用所述分组的所述 第一部分,并且不保持所述第一分组的历史。
12、 如权利要求9的设备,其中,所述第一组件在所述分组断开边界 后以及在所述第二分组前传输错误码部分和分组结束符号。
13、 如权利要求8的设备,其中,当所述第一组件具有足够达到所述 分组断开边界的信用时,所述第一组件传输所述第一分组,所述净荷的所 述第一部分包括流式传输的数据。
14、 如权利要求8的设备,其中,所述分组断开边界对应于所述点对 点互连通路的通信协议的可配置的能允许的分组断开边界。
全文摘要
在一个实施例中,本发明包括一种方法,用于从发送端沿着互连通路传输分组给接收端以及在分组断开边界处终止传输分组,该分组断开边界具有比分组的净荷长度小的长度。在这样的终止后,可以传输诸如更高优先级分组这样的另一分组,或者可以将原始分组的余下部分作为另一个分组传输。描述和权利要求中要求了其它实施例。
文档编号H04L12/56GK101494616SQ20091012671
公开日2009年7月29日 申请日期2009年1月23日 优先权日2008年1月23日
发明者M·韦格 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1