编码数据包头以启用PCIe链路高带宽效率的系统和方法

文档序号:7972474阅读:214来源:国知局
专利名称:编码数据包头以启用PCIe链路高带宽效率的系统和方法
技术领域
本发明大体上涉及计算机系统的通信。更明确地说,本发明涉及一种用于一采用外围部件互连高速(PCIe)链路计算机系统中通信的方法和系统。
背景技术
外围部件互连高速(PCIe)是用于一计算机内两个或两个以上装置之间的通信的通用输入/输出(I/O)互连。所述装置的实例可包括一图形处理器和一芯片组。采用PCIe的计算机系统通过发送数据包来通信。数据包形成于三个离散逻辑层中,所述三个离散逻辑层包括处理层、数据链路层和物理层。每一数据包具有一对应于这些层和一数据有效载荷部分的头。头含有可包括数据包格式、类型和属性的信息,地址/路由信息,编码信息和数据保护。数据有效载荷部分含有装置所需的数据。
在常规系统中,在由端点装置发出的存储器读取请求完成时,由包含根联合体的芯片组产生读取完成数据包。所述读取完成数据包包括常规读取完成头部分和数据有效载荷部分。常规读取完成头部分包括长度为两个字节的物理层头、长度为六个字节的数据链路层头和长度为十二个字节的处理层头。
此外,在常规系统中,存储器写入请求数据包由端点装置在发出存储器写入请求到根联合体时产生。存储器写入请求数据包包括常规存储器写入请求头部分和数据有效载荷部分。所述常规存储器写入请求头部分包括长度为两个字节的物理层头、长度为六个字节的数据链路层头和长度为十二个字节的处理层头。
这些数据包大量消耗采用PCIe链路的计算机系统的总线带宽且限制所述系统的总线吞吐率。因此存在对一种可增加采用PCIe链路的计算机系统的总线吞吐率的方法和系统的需要。

发明内容
本发明的一方面是提供一种用于改进采用PCIe链路的计算机系统的总线吞吐率的方法和系统。
为了达成上述方面,提供用于采用外围部件互连高速(PCIe)链路的计算机系统中通信的方法和系统。
本发明的一实施例中,提供一种处理存储器读取请求的方法。所述方法包括在PCIe链路上接收所述存储器读取请求且根据所述存储器读取请求从一存储器位置读取数据。所述方法进一步包括产生一读取完成数据包,其包括一头部分和一数据有效载荷部分,其中所述头部分长度小于20字节。接着在PCIe链路上传输所述读取完成数据包。
在本发明的另一实施例中,提供一种在PCIe链路上发出一存储器写入请求的方法。所述方法包括产生一存储器写入请求数据包,其包括一头部分和一数据有效载荷部分。所述头部分长度小于20字节。接着在PCIe链路上传输所述存储器写入请求。


随附图式(其中遍布不同的图,相似参考数字指相同或功能上相似的元件)和下文的具体实施方式
一起并入说明书且形成说明书的一部分,用以根据本发明进一步说明各实施例且解释各原则和优势。
图1是一显示一环境(其为例示性的,本发明的各实施例可在其中起作用)的方框图。
图2是一用于处理计算机系统中的存储器读取请求的方法步骤的流程图。
图3是根据本发明的一实施例的用于发出存储器读取请求的方法步骤的流程图。
图4A显示现有技术读取完成数据包的一头部分。
图4B显示根据本发明的一例示性实施例产生的读取完成数据包的一头部分。
图5是一用于在计算机系统中发出一存储器写入请求的方法步骤的流程图。
图6A显示现有技术存储器写入请求数据包的头部分。
图6B显示根据本发明的一例示性实施例产生的存储器写入请求数据包的一头部分。
图7是一显示根据本发明的一实施例的计算机系统的方框图。
参考数字100 环境102 芯片组104,106 端点装置108 中央处理单元(CPU)110 存储器402,404,602,604头部分700 计算机系统
702端点装置704芯片组706跟踪表模块具体实施方式
本发明的各实施例提供用于采用外围部件互连高速(PCIe)链路的计算机系统中的通信的方法和系统。PCIe是一用于一计算机内的两个或两个以上装置之间的通信的通用输入/输出(I/O)互连。所述装置可包括一个或一个以上端点装置和一芯片组。
图1是显示环境100(其为例示性的,例如计算机系统,本发明的各实施例可在其中起作用)的方框图。环境100包括一芯片组102、一端点装置104和一端点装置106。所属领域的技术人员将易于了解,端点装置的数量不以任何形式限制本发明。
芯片组102是根联合体,例如芯片组,其包含与端点装置104和端点装置106中的至少一个通信的普通地熟知为北桥和南桥的芯片、一中央处理单元(CPU)108和一用于存储可由不同单元所需的信息的存储器110。芯片组102经PCIe链路连接到端点装置104和端点装置106。芯片组102、端点装置104和端点装置106中的每一个具备一经特定配置的PCIe接口,经所述接口形成PCIe链路连接。芯片组102也可通过PCIe链路经连接到芯片组102、端点装置104和端点装置106中的每一个的交换器与端点装置104和端点装置106通信。
端点装置104和端点装置106可包含I/O装置。这些端点装置的实例可包括(但不限于)图形处理器、以太网卡和声卡。通过在将端点装置104、106连接到芯片组102的PCIe链路上发送复数个PCIe数据包而执行通信。
PCIe数据包大致形成于离散逻辑层中,例如处理层、数据链路层和物理层。每一PCIe数据包含有一对应于这些离散逻辑层中的一个或一个以上的头,即处理层头(TLH)、数据链路层头(DLLH)和物理层头(PLH)。包含于这些头中的数据包括(但不限于)PCIe数据包的格式、类型、属性,地址/路由信息,编码信息,数据保护和数据有效载荷的长度。除这些头以外,每一PCIe数据包包括一数据有效载荷。所述数据有效载荷含有待由接收PCIe数据包的逻辑装置使用的数据。在下文中解释根据本发明的各实施例用于PCIe系统中通信的用于产PCIe数据包的方法。
图2是根据本发明的一实施例处理计算机系统中存储器读取请求的方法步骤的流程图。所述计算机系统包含一第一装置和一第二装置,其通过PCIe链路相互耦合。所述第一装置可为端点装置104、106中的一个且所述第二装置可为芯片组102。第一装置发出存储器读取请求。本发明的一实施例中,第一装置在由存储器-读取标签索引的跟踪表中存储至少一个必要参数。结合图3解释所述存储至少一个必要参数的方法。
在步骤202中,由第二装置接收存储器读取请求。在步骤204,根据存储器读取请求由第二装置从存储器位置读取数据。存储器位置的实例可包括(但不限于)随机存取存储器(RAM)、只读存储器(ROM)和动态随机存取存储器(DRAM)。在步骤206,在完成存储器读取请求时产生读取完成数据包。其后,在步骤208,将读取完成数据包经PCIe链路传输到第一装置。
读取完成数据包包括数据有效载荷部分和头部分。数据有效载荷部分包括在存储器读取请求中由第一装置所请求的信息。头部分长度小于20字节。在本发明的一例示性实施例中,头部分包括一长度为两个字节的PLH和一长度为六个字节的DLLH。结果,在本发明的此例示性实施例中,读取完成数据包头部分的长度为八个字节。
本发明的一实施例中,在读取完成数据包头部分上传输处理层数据包(TLP)序列号和完成标签。TLP序列号是PCIe数据包的识别号。完成标签参考跟踪表,其含有与存储器读取请求关联的至少一个必要参数。
图3是根据本发明的一实施例的用于发出存储器读取请求的方法步骤流程图。在步骤302,第一装置在跟踪表中存储与存储器读取请求关联的至少一个必要参数。至少一个必要参数的实例可包括通信量级别(TC)字段、灵活排序(RO)字段、非监控(NS)字段、字节计数字段和较低地址字段。TC字段将PCI处理序列分为不同级别。每一级别使PCI处理序列与其所需的服务类型关联。RO字段和NO字段为帮助处理PCIe链路上的通信量的属性。这些字段中的值必须随存储器读取请求被执行和读取完成被报告而保持相同。字节计数字段传送存在于数据包中的数据字节数。较低地址字段为读取位置的最低七位。在存储器读取请求数据包的头部分中指定完整的读取地址。在步骤304,跟踪表以与由第一装置发出的存储器读取请求一起传输的存储器-读取标签为索引。存储器-读取标签为8位的号码。在本文说明的本发明的实施例中,存储器-读取标签具有小于16的值。在步骤306,由第一装置将PCIe数据包传输到第二装置以发出存储器读取请求。
图4A显示现有技术读取完成数据包的头部分402。头部分402包括一长度为两个字节的PLH(未显示于图4A)、一长度为六个字节的DLLH(其包括图4A显示的两个字节和图4A中未显示的链路循环冗余检查(LCRC)码的四个字节),和长度为十二字节的TLH。头部分402的DLLH包括第零字节和第一字节。头部分402的TLH包括从第二字节到第13字节的字节。TLP序列号在与第一字节的八位连接的头部分402的第零字节的前四位上传输。第零字节的最后四位作为保留位传输。此外,第一组参数在头部分402的TLH上传输。第一组参数包括格式字段、类型字段、存储器-标签字段、TC字段、处理描述(TD)字段、端点(EP)字段、RO字段、NS字段、完成者ID、请求者ID、完成状态、较低地址字段、长度字段、BC字段和字节计数字段。
格式字段描述请求格式。类型字段描述请求类型。另外,头部分402的存储器-标签字段长度为八位。TD字段描述PCIe处理序列的特性。EP字段用于错误转送。长度字段含有对应于响应读取请求而读取的字节总数的值。完成者ID为完成者的用于唯一识别完成者的总线号、装置号和功能号的组合。请求者ID为请求者的用于唯一识别请求者的总线号、装置号和功能号的组合。完成状态指示所请求的读取是否成功。BC字段通常为零。
除第一组参数外,头部分402的TLH的复数个位作为保留位传输。举例来说,头部分402的TLH的第二字节的第七位、第三字节的第零位到第三位和第三字节的第七位、第四字节的第二位和第三位、第13字节的第七位作为保留位传输。
图4B显示根据本发明的例示性实施例产生的读取完成数据包的头部分404。头部分404包括一长度为两个字节的PLH(未显示于图4B中)和一长度为六个字节的DLLH(其包括图4B显示的两个字节和图4B中未显示的LCRC码的四个字节)。TLP序列号和完成标签在头部分404的DLLH上传输。TLP序列号在与头部分404的DLLH的第零字节的前四位连接的第一字节的八位上传输。完成标签长度为四位且在头部分404的DLLH的第零字节的最后四位上传输。完成标签包括与存储器读取请求一起传输的存储器-读取标签的四个最不重要位。在本文说明的本发明的实施例中,存储器-读取标签的四个最不重要位假设为零且不包括在头部分404中。
第一装置接收具有头部分404的读取完成数据包且以以下方式提取头信息。首先,读取完成数据包的格式和类型不包括于头部分404中而读取完成数据包仅具有一类型,即读取完成,且因此第一装置的PCIe接口假设所接收到的PCIe数据包具有读取完成类型。存在其他头信息,其被假设具有某些值且因此不包括于头部分404中。其包括TD字段,其被假设为零;EP字段,其被假设为零;完成状态,其被假设为成功;BC字段,其被假设为零;和存储器-标签字段的四个最不重要位,其被假设为零。另外,不使用完成者ID和请求者ID,且这些字段不包括于头部分404中。长度字段不包括于头部分404中,因为数据包长度从所接收的数据包计算。使用完成标签从跟踪表恢复剩余的头信息,包括TC字段、RO字段、NS字段、字节计数字段和较低地址字段。
图5是根据本发明的一实施例计算机系统中发出存储器写入请求的方法步骤的流程图。计算机系统包括一第一装置和一第二装置,其通过一PCIe链路相互耦合。第一装置可具有端点装置104、106中的一个且第二装置可为芯片组102。由第一装置发出存储器写入请求。在步骤502,产生存储器写入请求数据包。存储器写入请求数据包包括一数据有效载荷部分和一小于20字节的头部分。数据有效载荷部分含有第二装置所需的用于处理存储器写入请求的信息。在本发明的一例示性实施例中,头部分包括一长度为两个字节的PLH、一长度为六个字节的DLLH和一长度为四个字节的TLH。结果,在此例示性实施例中,头部分长度为12字节。
另外,在步骤504,存储器写入请求数据包在PCIe链路上传输到第二装置。TLP序列号和一预定组的参数在存储器写入请求数据包的头部分上传输。
预定组的参数包括格式指示符、尺寸指示符、TC字段、RO字段和NS字段中的一个或一个以上。此外,预定组参数包括一存储器写入地址。
图6A显示现有技术存储器写入请求数据包的一头部分602。头部分602包括一长度为两个字节的PLH(未显示于图6A中)、一长度为六个字节的DLLH(其包括显示于图6A中的两个字节和未显示于图6A中的LCRC码的四个字节),和一长度为十二个字节的TLH。头部分602的DLLH包括第零字节和第一字节,且头部分602的TLH包括从第二字节到第13字节的字节。TLP序列号在与第零字节的前四位连接的第一字节的八位上传输。第零字节的最后四位作为保留位传输。其他参数包括格式字段、类型字段、存储器-写入标签字段、3位TC字段、TD字段、BP字段、RO字段、NS字段、长度字段、请求者ID字段、最后的双字字节使能(最后的DW BE)字段和第一DW BE字段。最后的DW BE字段含有用于服务请求的最后DW的字节使能。第一DW BE字段含有用于服务请求的第一DW的字节使能。另外,地址位在第十字节、第十一字节、第十二字节和第十三字节的最后六位上传输。第二字节的第七位、第三字节的第零位到第三位和第三字节的第七位、第四字节的第二位和第三位和第十三字节的第零位和第一位作为保留位传输。
图6B显示根据本发明的一例示性实施例产生的存储器写入请求数据包的头部分604。头部分604包括一长度为两个字节的PLH(未显示于图6B中)、一长度为六个字节的DLLH(其包括显示于图6B中的两个字节和未显示于图6B中的LCRC码的四个字节),和一长度为四个字节的TLH。DLLH包括第零字节和第一字节。TLH包括第二字节、第三字节、第四字节和第五字节。
TLP序列号和预定组参数在头部分604上传输。TLP序列号在与第零字节的四位连接的第一字节上传输。预定组参数包括格式指示符,尺寸指示符,TC字段的第一位和第二位、RO字段和NS字段。格式指示符在DLLH的第零字节的第七位上传输,且其含有对应于存储器写入请求的值之一。在DLLH的第零字节的第六位上传输的尺寸指示符含有对应于存储器写入请求数据包的64位尺寸的值之一。尺寸指示符的一零值对应于存储器写入请求数据包的32位尺寸。另外,TC字段的第一位和第二位在第零字节的第五和第四位上传输。除这些参数以外,地址位在与第五字节的五位连接的第二、第三、第四字节上传输。另外,RO字段在第一位上传输,且NS字段在第五字节的第零位上传输。
第二装置接收存储器以以下方式写入请求并提取头信息。格式和类型编码为1和1以指示一64位存储器写入请求,且编码为1和0以指示一32位存储器写入请求。存在其他头信息,其被假设为具有某些值且因此不包括于头部分604中。其包括TC字段的第三位,其被假设为零;TD字段,其被假设为零;EP字段,其被假设为零;和最后DW BE字段和第一DW BE字段中的每一个,其被假设为具有值之一。另外,不使用请求者ID和存储器-写入标签且其不包括于头部分604中。
图7是显示根据本发明的一实施例的计算机系统700的方框图。计算机系统700包括一装置,其具有一PCIe接口,其经编程以产生一具有一小于20字节的头部分的PCIe数据包。所述装置可为一端点装置702和一芯片组704中的一个。
本发明的一实施例中,PCIe数据包可为一由与存储器读取请求相关的端点装置702产生的存储器写入请求数据包。一预定组参数和一TLP序列号在由芯片组704接收的存储器写入请求数据包上传输。接着由芯片组704的PCIe接口提取预定组参数。在本发明的另一实施例中,PCIe数据包可为当由端点装置702发出的存储器读取请求已完成时由芯片组704产生的读取完成数据包。完成标签和TLP序列号在由端点装置702接收的读取完成数据包上传输。头信息由的端点装置702的PCIe接口提取。
端点装置702可包括一跟踪表模块706,其在跟踪表中存储与存储器读取请求关联的至少一个必要参数。使用跟踪表由端点装置702在其响应存储器读取请求从芯片组704接收到读取完成数据包时恢复所述至少一个必要参数。
本发明的各实施例提供一种用于改进PCIe链路的总线吞吐率的方法和系统。举例来说,对于具有32字节的有效载荷的完成数据包,总线吞吐率从61%改进到80%。同样,对于具有64字节的有效载荷的完成数据包,总线吞吐率从76%改进到89%。在另一实例中,对于具有32字节的有效载荷的已标出的写入数据包,总线吞吐率从61%改进到73%。同样,对于具有64字节的有效载荷的已标出的写入数据包,总线吞吐率从76%改进到84%。
另外,实施本发明各方面的计算机系统较快地转换到低功率状态且停留在低功率状态较长时间。这对省电作出贡献,其在移动式应用中非常有价值。
尽管已结合本发明的特定实施例对其进行了描述,但所属领域的技术人员将易于了解额外的优势和修改。因此本发明在其广泛方面不限于所展示和描述的特定细节、代表性设备和说明性实例。按照上文描述,所属领域的技术人员将易于了解各种改变、修改和变化。因此,应理解本发明不受上文描述的限制,而包含根据所附的权利要求书的精神和范畴的所有这些改变、修改和变化。
权利要求
1.在一具有通过一外围部件互连高速(PCIe)链路相互耦合的一第一装置和一第二装置的计算机系统中,一种通过所述第二装置处理一存储器读取请求的方法,所述方法包含以下步骤a.接收由所述第一装置在所述PCIe链路上发出的所述存储器读取请求;b.根据所述存储器读取请求从一存储器位置读取数据;c.产生一读取完成数据包,其包括一头部分和一数据有效载荷部分,其中所述头部分长度小于20字节;和d.在所述PCIe链路上将所述读取完成数据包传输到所述第一装置。
2.根据权利要求1所述的方法,其中所述第一装置为一端点装置,且所述第二装置为一芯片组。
3.根据权利要求1所述的方法,其中所述头部分长度为八字节。
4.根据权利要求1所述的方法,其中在所述读取完成数据包上传输一处理层数据包(TLP)序列号和一完成标签。
5.根据权利要求4所述的方法,其中使用所述完成标签来恢复与所述存储器读取请求关联的至少一个必要参数。
6.根据权利要求5所述的方法,其中将所述至少一个必要参数存储于一跟踪表中。
7.根据权利要求6所述的方法,其中使所述跟踪表以一存储器-读取标签为索引。
8.在一具有通过一外围部件互连高速(PCIe)链路相互耦合的一第一装置和一第二装置的计算机系统中,一种通过所述第一装置发出一存储器写入请求的方法,所述方法包含以下步骤a.产生一存储器写入请求数据包,其包括一头部分和一数据有效载荷部分,其中所述头部分长度小于20字节;和b.在所述PCIe链路上将所述存储器写入请求数据包传输到所述第二装置。
9.根据权利要求8所述的方法,其中所述第一装置为一端点装置,且所述第二装置为一芯片组。
10.根据权利要求8所述的方法,其中所述头部分长度为12字节。
11.根据权利要求8所述的方法,其中在所述存储器写入请求数据包上传输一处理层数据包(TLP)序列号和一预定组参数。
12.根据权利要求11所述的方法,其中所述预定组参数包括一存储器写入地址。
13.根据权利要求11所述的方法,其中所述预定组参数包含下列参数中的至少一者a.一格式指示符,所述格式指示符指示数据包的一格式和类型;b.一尺寸指示符,所述尺寸指示符指示所述数据包的尺寸;c.一通信量级别(TC)字段,所述TC字段将PCI处理序列分为不同级别;和d.一灵活排序(RO)字段和一非监控(NS)字段中的至少一者。
14 一种计算机系统,其包含一装置,所述装置经编程以产生一外围部件互连高速(PCIe)数据包,所述PCIe数据包包括一头部分,所述头部分长度小于20字节。
15.根据权利要求14所述的计算机系统,其中所述装置为一端点装置。
16.根据权利要求15所述的计算机系统,其中所述PCIe数据包为一存储器写入请求数据包,且所述存储器写入请求数据包是由所述端点装置结合一存储器写入请求而产生,且其中一处理层数据包(TLP)序列号和一预定组参数在所述存储器写入请求数据包上传输。
17.根据权利要求15所述的计算机系统,其中所述端点装置包含一跟踪表模块,所述跟踪表模块在一跟踪表中存储与一存储器读取请求关联的至少一个必要参数,所述端点装置在其响应所述存储器读取请求而接收到一读取完成数据包时恢复所述至少一个必要参数。
18.根据权利要求14所述的计算机系统,其中所述装置是一芯片组。
19.根据权利要求18所述的计算机系统,其中所述PCIe数据包是一读取完成数据包,且所述读取完成数据包由所述芯片组结合一存储器读取请求的一完成而产生,且其中一处理层数据包(TLP)序列号和一完成标签在所述读取完成数据包上传输。
20.根据权利要求14所述的计算机系统,其中所述装置为一图形处理器。
全文摘要
一种采用外围部件互连高速(PCIe)链路的计算机系统包括产生一PCIe数据包的装置,其中所述PCIe数据包具有小于一常规PCI数据包头部分的一头部分。所述装置可为例如一图形处理器的一端点装置和例如一根联合体的一芯片组。所述经减小尺寸的头改进所述计算机系统的总线吞吐率且减少所述计算机系统的功率需求。
文档编号H04L12/56GK1953461SQ20061015281
公开日2007年4月25日 申请日期2006年10月18日 优先权日2005年10月19日
发明者威廉·P·朱 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1