用于细化的链路训练的数据结构的制作方法

文档序号:23220269发布日期:2020-12-08 15:02阅读:76来源:国知局
用于细化的链路训练的数据结构的制作方法

本公开内容涉及计算系统,并且具体地(但非排他地)涉及用于点对点互连的训练。



背景技术:

半导体处理和逻辑设计的发展已经允许可以存在于集成电路设备上的逻辑的数量的增加。作为必然结果,计算机系统配置已经从系统中的单个或多个集成电路演变为存在于单独的集成电路上的多个核、多个硬件线程和多个逻辑处理器、以及集成在这种处理器内的其它接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可以包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。

由于有更大能力来在更小的封装中适配更大处理能力,所以较小型的计算设备已经越来越普及。智能手机、平板设备、超薄笔记本电脑和其它用户设备已经呈指数级增加。然而,这些较小型的设备依赖于服务器来进行超出形状因子的数据存储和复杂处理两者。因此,对高性能计算市场(即,服务器空间)的需求也已经增加。例如,在现代服务器中,通常不仅存在具有多个核的单个处理器,而且还存在多个物理处理器(也被称为多个插槽)以提高计算能力。服务器还可以使用分布式计算、用机柜式架构以及其它替代实现方式来实现。随着处理能力连同计算系统中的设备数量一起增长,插槽与其它设备之间的通信变得更加关键。

实际上,互连已经从主要处理电气通信的更传统的多位总线发展为促进快速通信的成熟的互连架构。遗憾的是,由于对未来处理器以甚至更高速率消耗的需求,对现有互连架构的能力施加了对应的需求。

附图说明

图1示出了包括互连架构的计算系统的实施例。

图2示出了包括分层栈的互连架构的实施例。

图3示出了要在互连架构内生成或接收的请求或分组的实施例。

图4示出了用于互连架构的发射机和接收机对的实施例。

图5a-5c是通过示例链路拓扑连接的端口的简化框图。

图6a-6b是通过由示例转换层实现的链路所连接的示例设备的简化框图。

图7a-7b是示出示例转换层的操作的简化框图。

图8a-8c是示出在示例物理连接的介质上传送示例数据结构的简化框图。

图9是通过相应的示例链路连接到一个或多个不同设备的示例计算设备的简化框图。

图10示出了用于包括多核处理器的计算系统的框图的实施例。

图11示出了用于包括多个处理器的计算系统的框的实施例。

具体实施方式

在以下描述中,阐述了诸如以下各项的示例的大量具体细节以便提供对本发明的透彻理解:特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等。然而,对于本领域技术人员将显而易见的是,可能不需要采用这些具体细节来实施本发明。在其它情况下,没有详细描述公知的组件或方法(诸如特定和替代的处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表达、特定掉电和门控技术/逻辑、以及计算机系统的其它特定操作细节),以便避免不必要地模糊本发明。

尽管以下实施例可能是参考诸如在计算平台或微处理器中的特定集成电路中的能量节省和能量效率来描述的,但是其它实施例适用于其它类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可以应用于也可以受益于更好的能量效率和能量节省的其它类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或超级本tm。并且还可以用在其它设备中,诸如手持设备、平板设备、其它轻薄笔记本电脑、片上系统(soc)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(pda)和手持pc。嵌入式应用通常包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机或能够执行下面教导的功能和操作的任何其它系统。此外,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量节省和能量效率的软件优化。如在下面的描述中将变得显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于未来与性能考虑平衡的“绿色技术”而言至关重要。

随着计算系统不断发展,其中的组件变得越来越复杂。结果,用以在组件之间耦合和通信的互连架构的复杂度也在不断增加,以确保满足针对最佳的组件操作的带宽要求。此外,不同的市场细分需要互连架构的不同方面来满足市场的需求。例如,服务器要求更高的性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。但是,大多数结构的唯一目的是以最大的功率节省来提供最高的可能性能。下面讨论了多个互连,这将潜在地受益于本文描述的本发明的各方面。

一种互连结构架构包括快速外围组件互连(pci)(pcie)架构。pcie的主要目标是使得来自不同供应商的组件和设备能够在跨多个市场细分;客户端(台式机和移动设备)、服务器(标准、机柜式、云、雾、企业等)以及嵌入式和通信设备的开放架构中进行互操作。快速pci是针对多种多样的未来的计算和通信平台而定义的高性能、通用i/o互连。一些pci属性(诸如其使用模型、负载存储架构和软件接口)已经通过其修订得以保留,而先前的并行总线实现方式已经被高度可扩展的完全串行接口所取代。快速pci的最近版本利用点对点互连、基于交换机的技术和分组化协议的发展来提供新级别的性能和特征。功率管理、服务质量(qos)、热插拔/热交换支持、数据完整性和错误处理是快速pci所支持的其中一些高级特征。

参照图1,示出了由将一组组件互连的点对点链路组成的结构的实施例。系统100包括处理器105和耦合到控制器集线器115的系统存储器110。处理器105包括任何处理元件,诸如微处理器、主机处理器、嵌入式处理器、协处理器或其它处理器。处理器105通过前端总线(fsb)106耦合到控制器集线器115。在一个实施例中,fsb106是如下所述的串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。在一些实现方式中,该系统可以包括用以实现多个协议栈的逻辑以及用以协商要在公共物理层之上运行的替代协议的另外的逻辑、以及其它示例特征。

系统存储器110包括任何存储器设备,诸如随机存取存储器(ram)、非易失性(nv)存储器或可由系统100中的设备访问的其它存储器。系统存储器110通过存储器接口116耦合到控制器集线器115。存储器接口的示例包括双倍数据速率(ddr)存储器接口、双通道ddr存储器接口和动态ram(dram)存储器接口。

在一个实施例中,控制器集线器115是快速外围组件互连(pcie或pcie)互连层级中的根集线器、根复合体或根控制器。控制器集线器115的示例包括芯片组、存储器控制器集线器(mch)、北桥、互连控制器集线器(ich)、南桥和根控制器/集线器。术语芯片组通常是指两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ich)的存储控制器集线器(mch)。注意的是,当前系统通常包括与处理器105集成的mch,而控制器115将以下文所述的类似方式与i/o设备进行通信。在一些实施例中,可选地通过根复合体115来支持对等路由。

此处,控制器集线器115通过串行链路119耦合到交换机/桥接器120。输入/输出模块117和121(其也可以被称为接口/端口117和121)包括/实现分层协议栈,以在控制器集线器115和交换机120之间提供通信。在一个实施例中,多个设备能够耦合到交换机120。

交换机/桥接器120将分组/消息从设备125向上游(即,沿着朝着根复合体的层级向上)路由到控制器集线器115,以及从处理器105或系统存储器110向下游(即,沿着远离根控制器的层级向下)路由到设备125。在一个实施例中,交换机120被称为多个虚拟pci到pci桥接器设备的逻辑组件。设备125包括耦合到电子系统的任何内部或外部设备或组件,诸如i/o设备、网络接口控制器(nic)、插入卡、音频处理器、网络处理器、硬驱动器、存储设备、cd/dvdrom、监测器、打印机、鼠标、键盘、路由器、便携式存储设备、firewire(火线)设备、通用串行总线(usb)设备、扫描仪和其它输入/输出设备。通常在pcie行话(vernacular)中,诸如设备被称为端点。尽管未具体示出,但是设备125可以包括pcie到pci/pci-x桥接器以支持传统或其它版本的pci设备。pcie中的端点设备通常被分类为传统、pcie或根复合体集成端点。

图形加速器130还通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到mch,该mch耦合到ich。交换机120以及相应的i/o设备125然后耦合到ich。i/o模块131和118还将实现分层协议栈,以在图形加速器130和控制器集线器115之间进行通信。类似于以上的mch讨论,图形控制器或图形加速器130本身可以集成在处理器105中。此外,系统中的一个或多个链路(例如,123)可以包括一个或多个扩展设备(例如,150),诸如重定时器、中继器等。

转向图2,示出了分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,诸如快速通道互连(qpi)栈、pcie栈、下一代高性能计算互连栈或其它分层栈。尽管紧接在下文参考图1-4的讨论是关于pcie栈的,但是相同的概念可以应用于其它互连栈。在一个实施例中,协议栈200是pcie协议栈,其包括事务层205、链路层210和物理层220。接口(诸如图1中的接口117、118、121、122、126和131)可以被表示成通信协议栈200。作为通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。

快速pci使用分组来在组件之间传送信息。在事务层205和数据链路层210中形成分组,以将信息从发送组件携带到接收组件。当所发送的分组流经其它层时,在那些层处将它们扩展为具有用于处理分组所必要的额外信息。在接收侧,发生相反的过程,并且分组从其物理层220表示转换为数据链路层210表示,并且最后(对于事务层分组)转换为可以由接收设备的事务层205处理的形式。

事务层

在一个实施例中,事务层205用以提供在设备的处理核与互连架构(诸如数据链路层210与物理层220)之间的接口。就这一点而言,事务层205的主要职责是对分组(即,事务层分组或tlp)的组装和拆解。转换层205通常管理针对tlp的基于信用的流控制。pcie实现拆分事务(即,具有按照时间分开的请求和响应的事务),以允许链路在目标设备收集用于响应的数据时携带其它业务。

另外,pcie利用基于信用的流控制。在该方案中,设备通告用于事务层205中的接收缓冲区中的每一者的初始信用量。在链路的相对端处的外部设备(诸如图1中的控制器集线器115)对每个tlp所消耗的信用数量进行计数。如果事务不超过信用限制,则可以发送该事务。在接收到响应时,恢复信用量。信用方案的优点在于,只要不遇到信用限制,信用返回的时延就不影响性能。

在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于向/从存储器映射的位置传输数据的读请求和写请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(诸如32比特地址)或长地址格式(例如64比特地址)。配置空间事务用于访问pcie设备的配置空间。针对配置空间的事务包括读请求和写请求。消息空间事务(或简称为消息)被定义为支持在pcie代理之间的带内通信。

因此,在一个实施例中,事务层205组装分组报头/有效载荷206。可以在pcie规范网站上的pcie规范中找到用于当前分组报头/有效载荷的格式。

快速参照图3,示出了pcie事务描述符的实施例。在一个实施例中,事务描述符300是一种用于携带事务信息的机制。就这一点而言,事务描述符300支持对系统中的事务的识别。其它潜在用途包括跟踪对默认事务排序的修改以及事务与信道的关联。

事务描述符300包括全局标识符字段302、属性字段304和信道标识符字段306。在所示出的示例中,描绘了包括本地事务标识符字段308和源标识符字段310的全局标识符字段302。在一个实施例中,全局事务标识符302对于所有未完成的请求而言是唯一的。

根据一种实现方式,本地事务标识符字段308是由请求代理生成的字段,并且其对于要求该请求代理完成的所有未完成的请求而言是唯一的。此外,在该示例中,源标识符310唯一地标识pcie层级内的请求者代理。因此,本地事务标识符308字段连同源id310一起提供层级域内的事务的全局标识。

属性字段304指定事务的特性和关系。就这一点而言,属性字段304潜在地用于提供允许修改事务的默认处理的额外信息。在一个实施例中,属性字段304包括优先级字段312、预留字段314、排序字段316和无探听字段318。此处,优先级子字段312可以由发起者修改以向事务指派优先级。预留属性字段314被预留用于将来或供应商定义的使用。使用优先级或安全性属性的可能的使用模型可以使用预留属性字段来实现。

在该示例中,排序属性字段316用于提供传送可以修改默认排序规则的排序类型的可选信息。根据一种示例实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示宽松排序,其中写入可以在相同的方向上传递写入,并且读取完成可以在相同的方向上传递写入。探听属性字段318用于确定事务是否被探听。如图所示,信道id字段306标识事务与其相关联的信道。

链路层

链路层210(也被称为数据链路层210)充当事务层205与物理层220之间的中间阶段。在一个实施例中,数据链路层210的职责是提供用于在链路的两个组件之间交换事务层分组(tlp)的可靠机制。数据链路层210的一侧接受由事务层205组装的tlp,应用分组序列标识符211(即,标识号或分组号),计算并应用错误检测码(即,crc212),并且将经修改的tlp提交给物理层220以用于跨物理设备到外部设备的传输。

物理层

在一个实施例中,物理层220包括逻辑子块221和电气子块222,以将分组物理地发送到外部设备。此处,逻辑子块221负责物理层221的“数字”功能。就这一点而言,逻辑子块包括发送部分和接收机部分,发送部分用以准备用于由物理子块222传输的传出信息,接收机部分用以在将接收到的信息传递给链路层210之前对其进行标识和准备。

物理块222包括发射机和接收机。逻辑子块221向发射机提供符号,发射机将其进行串行化并且发送到外部设备上。向接收机提供来自外部设备的经串行化的符号,并且接收机将接收到的信号转换为比特流。比特流被解串行化并且被提供给逻辑子块221。在一个实施例中,采用了8b/10b传输码,其中发送/接收十比特符号。此处,使用特殊符号,以利用帧223对分组进行成帧。此外,在一个示例中,接收机还提供从传入串行流中恢复出的符号时钟。

如上所述,尽管事务层205、链路层210和物理层220是参考pcie协议栈的特定实施例来讨论的,但是分层协议栈并不限于此。实际上,可以包括/实现任何分层协议。作为一个示例,被表示为分层协议的端口/接口包括:(1)用以组装分组的第一层,即事务层;用以将分组排序的第二层,即链路层;用以发送分组的第三层,即物理层。作为特定示例,利用了公共标准接口(csi)分层协议。

接下来参考图4,示出了pcie串行点对点结构的实施例。尽管示出了pcie串行点对点链路的实施例,但是串行点对点链路并不限于此,因为其包括用于发送串行数据的任何传输路径。在所示出的实施例中,基本pcie链路包括两个低压差分驱动信号对:发送对406/411和接收对412/407。因此,设备405包括用以向设备410发送数据的发送逻辑406和用以从设备410接收数据的接收逻辑407。换句话说,两条发送路径(即路径416和417)以及两条接收路径(即路径418和419)被包括在pcie链路中。

传输路径是指用于发送数据的任何路径,诸如传输线、铜线、光线路、无线通信信道、红外通信链路或其它通信路径。两个设备(诸如设备405和设备410)之间的连接被称为链路(例如链路415)。链路可以支持一个通道,每个通道表示一组差分信号对(一对用于发送,一对用于接收)。为了扩展带宽,一条链路可以聚合由xn表示的多个通道,其中n是任何支持的链路宽度,诸如1、2、4、8、12、16、32、64或更宽。

差分对是指用于发送差分信号的两条传输路径,诸如线路416和417。例如,当线路416从低电压电平切换到高电压电平(即上升沿)时,线路417从高逻辑电平驱动到低逻辑电平(即下降沿)。差分信号潜在地表现出更好的电气特性,诸如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等。这允许更好的定时窗口,从而实现更快的传输频率。

在一些实现方式中,可以提供能够以诸如25gt/s和/或32gt/s之类的高速进行操作的高性能互连和对应的互连协议(例如,诸如基于下一代pcie的互连)。在一个示例中,可以基于(例如,在链路训练期间)针对信道所确定的特性来针对高性能互连定义两种速度,一种速度为25gt/s并且一种速度为32gt/s。在一种实现方式中,互连可以与现有的pcie世代和为这些世代提供的速度(例如,8gt/s、16gt/s等)向后兼容。

被设计和定义为用作通用i/o解决方案的一些互连(诸如pcie和其它互连)可能要求链路在其带宽能力方面是对称的。例如,可以定义互连协议和其对应的协议栈实现方式,以实现在发送方向和接收方向两者上具有相等数量的通道和/或数据速度在发送方向和接收方向两者上是相同的链路。实际上,在一些实现方式中,可以基于带宽对称的假设来设计和实现互连协议的链路训练和状态机、以及实现该协议的对应的配置寄存器和电路。尽管这种解决方案对于通用i/o连接可能是有利的,但是这种设计也可能限制协议在其中带宽需求可能从根本上非对称的其它应用内的使用。例如,用于诸如以下各项的系统和设备的互连可以有利地利用非对称连接(在发送方向和接收方向之间具有不相等的带宽):图形显示器(例如,其中被发送用于显示的数据呈指数级大于从显示单元发送回的控制信号)、机器学习硬件(例如,其中输入到神经网络的采样数据(例如,图像或视频)比作为结果返回的数据(例如,特征向量)大得多)、传感器(例如,其中去往传感器的控制信号与在传感器处产生的传感器数据(例如,图像、视频、3d点云等)相比是适度的)、和存储介质(例如,具有不同的读/写能力(例如,闪速tm设备))。例如,一些应用可能在要求更多的业务方向上利用更多的通道和/或更高的数据速度。因此,如果这样的应用利用为对称应用设计的技术,则互连可能在另一个方向上被低效地过度配置。实际上,在更极端的非对称数据流(诸如相机或显示器数据的传输)中,系统的带宽要求可能实际上是单向的,其中针对控制和链路管理以及其它示例仅要求非常小的反向信道。

鉴于以上所述,可能期望使用通用互连来实现对非对称拓扑的支持,以优化其中带宽需求从根本上非对称的(诸如伴随许多类型的加速器发生的(由于其工作负荷的计算要求导致的))应用中的、以及诸如存储(其中存储介质本身的读和写能力导致不同的链路带宽要求)之类的应用、以及其它示例的成本和功率。例如,诸如图像传感器和显示器之类的设备固有地具有如此高度非对称的带宽要求,使得需要非对称拓扑以用于经济上可行的实现。传统上,这种设备使用专用连接(例如,用于成像器的csi、用于显示器的显示端口或hdmi等),所述专用连接仅在一个方向上具有高速连接,并且具有基于i2c或类似类型的“2线”io的单独控制信道。利用细化的链路训练(rlt),pcie甚至能够适于诸如此类的专门用例,具有改进的设计重用、实现灵活性和实现新设备能力的益处以及其它示例优点。

在一些实现方式中,可以在通过双向数据链路所连接的端口(例如,上游或下游端口)中的至少一个端口处提供补充逻辑。例如,可以通过这种补充逻辑来实现非对称数据链路和其训练,从而增强根据假定(或被设计为适应)对称带宽的协议而形成的链路。例如,互连(诸如pcie)的协议栈可以通过转换层逻辑进行补充,以实现具有非对称数量的通道和/或数据速度的链路(例如,针对其中仅在一个方向上要求高速并且非常低速的连接(例如,i2c或i3c)用于反向信道的情况,以及其它示例)。在许多平台环境(包括嵌入式(例如,iot)平台,其中实现通用i/o(例如,pcie)可能要求对设备进行过度设计,从而使得这样的互连解决方案对于固有的非对称应用而言是不予以考虑的)中,实现这样的能力可能是有益的,以及其它示例考虑和优点。

如上文所介绍的,细化的链路训练的实现方式可以实现对具有非对称要求的链路的优化,并且从而允许将通用i/o解决方案扩展到非对称应用,而之前这样做在功率、成本方面将是不合适的,以及其它示例缺点。通过将通用互连平台(诸如pcie)的可行性和适用性扩展到更专门的应用(其中期望非对称带宽和其它独特的链路功能),系统可以集成并且甚至重新使用发展完善且可信赖的通用互连解决方案,而不是设计定制的i/o解决方案。例如,通过rlt,诸如pcie之类的互连可以用作构建专用i/o解决方案的基础(而不是依赖于额外或定制的i/o解决方案)来提高产品灵活性,例如,通过在板或系统设计时实现“后期绑定”,将通用片上系统(soc)设备和其它设备的i/o模块化,而无需过度配置设备,以及其它示例益处。

如上文所介绍的,细化的链路训练解决方案可以使得可能需要对称高速链路配置的pcie和类似互连能够支持非对称链路配置,包括仅在一个方向上存在高速串行能力的情况。例如,转向图5a-5c,示出了简化框图500a-c,其示出了一些示例系统的示例链路拓扑。图5a示出了连接两个端口505、510的传统的对称链路515a的示例。每个端口设备505、510可以包括用以实现和训练链路515a并且然后利用经训练的链路在两个设备之间传送数据的电路。在该示例中,每个端口设备(例如,505、510)可以包括相应的发送(tx)端口和接收(rx)端口。可以将链路视为一个设备的tx端口与另一设备的rx端口之间的连接。在双向通信信道的情况下,每个设备的tx端口连接到另一设备的rx端口,从而在上游(例如,朝向主机处理器)和下游(例如,远离主机处理器)方向上形成两条链路或双向链路(在本文中也被统称为“链路”)。对称链路(例如,515a)可以在上游和下游方向上包括相等数量的通道,其中上游和下游链路中的每一者都支持相同的数据传输速度。这样的链路(例如,515a)可以是在没有提供除了底层通用互连协议的一个或个层之外或代替所述一个或多个层的rlt或转换逻辑的情况下实现的。然而,对称链路的一些实现方式仍然可以利用rlt,例如以支持落在基本互连协议规范之外的额外的特征或实施例,从而允许在链路515a上发送和实现额外或不同的链路信息内容。

图5b和5c的示例示出了非对称链路(例如,515b、515c)的示例。如上所讨论的,可以利用rlt解决方案和逻辑来扩展、增强或以其它方式修改底层通用互连协议(例如,pcie)的功能,以实现被构建在互连协议之上的非对称链路(甚至当互连协议天然地不支持非对称带宽时)。例如,在图5b的示例中,可以提供rlt层以允许其中一个方向上的通道数量大于返回方向上的通道数量的链路515b。图5c示出了链路515c的示例,其中仅在一个方向上存在高速信令,而低速接口(由较细的箭头表示)(例如,i2c、i3c等)用于反向信道。也可以利用对应的rlt层以及其它示例来促进和实现这样的链路515c。

实现对互连的原生(native)链路训练和控制信令的修改的解决方案(诸如rlt)还可以实现和/或改进互连的链路训练机制(例如,物理层链路训练)的模块化和可扩展性,这在一些情况下已经演变得极其复杂并且难以理解和实现。例如,当不要求向后兼容性时,该方法可以允许基于特定解决方案的属性来极大地简化或定制用于链路训练的状态机(例如,链路训练和状况状态机(ltssm))的各方面,而同时提供清楚的途径来实现新能力。

如上文所介绍的,可以在系统上提供细化的链路训练(rlt)能力,以使得基于pcie的互连或通常需要对称的高速链路配置的其它互连能够支持非对称链路配置,包括仅在一个方向上存在高速串行能力的情况。例如,互连可以定义在链路的训练期间的各种有序集合和训练序列,并且可以基于对称链路的假设来在互连协议中定义这些有序集合和传送其所采用的方式。例如,pcie可以针对协议栈的物理层使用各种有序集合,以传送信息并且协商和同步链路状态转换。然而,在一些情况下,这种有序集合已经演变得非常复杂。此外,在一些实现方式(诸如pcie)中,可以在链路的每个通道上发送有序集合和训练序列的实例,从而在有序集合的每个实例中隐式地携带特定于通道的信息(例如,基于有序集合是在给定的通道上发送/接收的)。

在一些实现方式中,可以在硬件电路和/或支持软件中提供逻辑以实现rlt层。例如,在细化的链路训练(rlt)中,被定义为在协议的各种有序集合内携带并且从而促进链路训练、链路状态转换、确认、状况和控制信令以及其它用途的链路信息内容可以是与(例如,由协议的物理层和/或数据链路层生成的)有序集合分离的并且被转换(以及重新格式化)成在协议外部定义的数据结构。实际上,可以基于要为其提供链路的特定应用(包括非对称带宽的应用)来定义这样的数据结构。然后,可以在链路上发送该数据结构,而不是发送标准的协议定义的有序集合,其中一些实现方式使得能够以对于介质(例如,链路的物理特性(例如,链路宽度或速度))不可知的方式来发送这样的数据结构。

转向图6a-6b,示出了简化框图600a-b,其示出了示例设备605、610,示例设备605、610将通过非对称链路515拓扑进行通信。在一些实现方式中,可以通过转换层(例如,620、625)在整体上促进rlt。在其它情况下,可以通过通用协议栈的经修改的版本来实现rlt,其中rlt层取代了在互连协议的基本版本中定义的其它层或功能。可以提供转换层,以便利用rlt层来补充标准互连协议栈(例如,在端口505、510a中实现的)。rlt层可以扩充或修改标准互连协议栈(诸如该栈的物理层),以改变内容链路信息和/或其如何被传送,以及协商和同步涉及链路信息内容的链路状态转换。例如,端口505的协议电路可以被配置为基于关于实际物理链路(例如,515)是对称的或者是以其它方式根据协议电路的对应的互连协议来定义的假设,来生成有序集合和对应的链路信息内容。协议电路可以在接口615上传送有序集合数据,接口615将端口505的协议电路与rlt转换层620耦合。在一些情况下,从协议电路的角度来看,所生成的有序集合(对于特定数量的通道)已经被发送。然而,实际上,转换层620可以拦截有序集合数据,解析有序集合,并且识别在有序集合数据中包含的哪些(如果有的话)链路信息与链路515的特定拓扑密切相关。转换层620可以生成数据结构以包括建立链路515所需要的链路信息,该链路信息可以包括或者可以不包括来自有序集合数据的信息。然后,转换层620可以使得数据结构代替有序集合来在链路515的通道上被发送到耦合到链路515的另一设备610。同样,由另一设备(例如,610)的端口510a的协议电路所生成(并且在接口630上被发送到转换层625)的有序集合可以由该设备的转换层625转换成针对链路拓扑所定义的数据结构(例如,而不是发送有序集合本身)。

在图6a的示例中,使用对应的转换层620、625在设备605、610中的每个设备处实现rlt功能。在一些替代实现方式中,如图6b的示例中所示,一些实现方式可以替代地通过协议电路的经修改的版本来实现rlt层和相关联的功能,使得在端口(例如,510b)处本地实现rlt功能,而不是提供转换层(例如,625)作为用以补充端口(例如,510a)的协议电路的层。rlt层可以是特定于实现方式的,其中提供了rlt层的不同实现方式以支持和生成被配置用于在潜在的许多不同链路拓扑中的对应一者中训练和建立链路时使用的数据结构。例如,rlt层可以根据实际物理接口的需求和能力来对由底层互连协议所生成的有序集合进行编码/解码,以使得该物理接口(对于底层协议栈)看起来是对称的或者是以其它方式符合规范的接口。

为了支持链路,可以向链路的每一侧(例如,605和615)提供相同类型的rlt层,使得每一侧能够生成和发送另一rlt层可以接收和解码的具有定义结构的rlt数据结构,以成功地训练和建立链路。如图6a-6b的示例中所示,该公共rlt层可以在设备的协议逻辑中实现(如图6b中的设备615那样),或者通过补充标准互连协议逻辑的单独的转换层来实现(如设备605和610那样),以及其它示例实现方式。

rlt数据结构可以被认为是“容器”,其中结构和字段被定义为是可读的并且是与通过对应链路连接的每个设备兼容的。可以将数据结构定义为包括实现连接两个设备的特定链路拓扑所需要的该信息。因此,可以在数据结构中包括在(由基本协议定义的)底层有序集合中定义的全部或少于全部的链路信息内容。实际上,可以通过额外字段来包括额外信息(例如,未在互连协议的规范中定义或考虑的信息),从而补充这种协议定义的字段。在一些实现方式中,可以将数据结构定义为包括额外的预留字段。这样的预留字段可以体现在底层有序集合中定义的预留字段,使得可以实现对这些字段的将来使用而无需改变转换层。在另一种情况下,可以包括预留字段以供转换层本身使用,例如,以提供在底层互连协议(例如,pcie)中没有对应关系的能力,诸如特定于物理链路的功率管理和其它特征。另外,在其中底层协议的有序集合受奇偶校验或其它错误检测特征保护的实现方式中,可以为数据结构提供额外字段以实现相似(或甚至增强)的数据错误和/或校正能力。例如,虽然有序集合可以通过奇偶校验比特进行保护,但是rlt数据结构可以被配备有循环冗余校验(crc)或纠错码(ecc)字段以酌情针对所使用的介质的错误属性来替换现有的有序集合中的错误检测能力、以及其它示例数据结构字段。

转向图7a-7b,示出了简化框图700a-b,其示出了用于基于特定互连协议来在rlt数据结构和有序集合之间进行转换的示例转换层(例如,620)。例如,在图7a中,示出了包括转换层620的示例发射机端口的视图。实现示例互连协议的协议栈的电路可以根据该协议来生成各种有序集合710a,诸如电气有序集合、训练序列、skp有序集合、以及用于在建立链路时使用的其它数据序列。在一些实现方式中,协议可能要求在链路的每个通道上并发地发送给定有序集合。在一个示例中,协议栈可以基于关于链路将构成相同数量的通道的假设来生成多个有序集合710a。转换层620可以在有序集合710a在物理链路接口715a上被发出之前将其拦截。取决于转换层620的实现方式(其可以是基于转换层将针对其来适配链路训练和配置活动的链路接口715a的类型),转换层620可以提取或保留通过有序集合710a传送的各种链路信息,并且潜在地丢弃或过滤掉其它链路信息。在识别出要保留的链路信息之后,转换层620可以将该信息编码在根据转换层实现方式而定义的一个或多个rlt数据结构715a中。转换层620可以使得这些数据结构代替由协议栈所生成的有序集合710a来被发送。

转向图7b,示例转换层620也可以用于对由在使用介质715b的链路上连接的另一端口生成并且从其接收的rlt数据结构(例如,705b)进行解码。因此,转换层620可以接收一组一个或多个数据结构705b,数据结构705b包括用于在特定物理介质715b上建立链路时使用的链路信息。转换层620可以提取并且使用所接收的数据结构705b中的必要的链路信息,并且还可以使用被包含在数据结构705b中的该(或其它)信息,来生成合成有序集合数据710b以传递给协议栈。例如,在物理介质715仅包括两个物理通道的情况下,协议栈可以假定使用了八个物理通道,并且转换层620可以接收数据结构705b的集合,使用在数据结构中包括的信息来配置和训练两通道链路,并且进一步生成一组八个有序集合710b(对应于在链路中使用的八个通道的假定分组)以供协议栈消耗。合成有序集合710b可以是按照使协议栈确信它们是在链路上实际接收到的这种方式来生成的,以及按照协议栈理解的方式将链路信息传送给协议栈,以便进一步建立和训练链路(例如,通过将在数据结构705b中接收的相关链路信息编码在合成有序集合的对应字段内),以及其它示例。

在一些实现方式中,由协议栈针对链路所生成的至少一些链路信息在训练实际物理链路(例如,715a、b)时可能不是相关或有用的。在一些情况下,转换层(例如,620)可以简单地过滤掉并且忽略该信息,并且从其生成的数据结构(例如,705a)中排除这种无关的信息。替代地,在一些实现方式中,转换层620仍然可以被配置为利用来自接收到的有序集合(例如,710a)的至少一些链路信息来对数据结构进行编码,并且将该信息发送到链路上的另一端口的rlt层上。例如,这样的信息对于进行接收的转换层在根据数据结构来生成实际的合成有序集合(例如,710b)时可能是有用的(例如,因为在稍后生成的合成有序集合中可能需要重复或引用有序集合中的链路信息),以及其它示例用途。

如上所述,在一些实现方式中,链路信息可以是基于已经在底层协议的有序集合中定义的链路信息的。实际上,在一些实现方式中,针对非对称连接所生成的rlt数据结构可以遵循用于根据协议而定义的对称链路的链路信息内容的结构。在一些实现方式中,这种方法可以简化rlt层。实际上,数据结构中的字段的至少一部分可以是从根据其来生成数据结构的有序集合中定义的镜像字段借用的或者是所述镜像字段。在一些情况下,数据结构中的链路信息还可以包括更少或不同的信息,诸如用于实现在底层通用互连协议中不支持的新特征或特定于拓扑的特征或者用于在链路配置和操作中提供更大灵活性的信息,以及其它示例考虑。

如上所述,在一些互连协议中,有序集合和其中携带的链路信息内容已经演变得非常复杂。使用pcie作为一个说明性示例,基于pcie的协议的链路信息内容可以包括:关于存在端口的标识(暗示);对端口的物理能力的描述;针对链路所协商的(例如,在运行时选择的,在正常链路操作期间(例如,在定义的时间处和/或与特定的链路状态转换相关联地等等)改变的)操作参数;针对链路状态转换的请求或确认(例如,其有时可能是隐式的,例如通过改变数据字段值);skpos数据有效载荷信息(例如,与高速数据路径绑定的运行时命令/状况(诸如在接收机处的通道余量调整(lanemargining)中使用的));以及其它示例。

作为更详细(且非限制性)的示例,表1-5示出了(如在pcie中定义的)示例链路信息,其在一些实现方式中可以被编码在rlt数据结构中。例如,表1列出了pcie的标准和eqts1有序集合的示例显式链路信息内容:

表1:标准和eqts1有序集合链路信息内容

类似地,表2列出了标准和eqts2有序集合的示例链路信息内容(仅列出了其与表1中针对ts1有序集合所讨论的链路信息内容的不同之处):

表2:标准和eqts2有序集合链路信息内容

表3列出了pcie中的经修改的ts1/ts2有序集合的链路信息内容(仅列出了其与表1中针对ts1有序集合所讨论的链路信息内容的不同之处):

表3:经修改的ts1/ts2有序集合链路信息内容

继续该示例,表4列出了pcie中的标准skp有序集合的示例链路信息内容(使用128b/130b编码):

表4:标准skpos链路信息内容

表5列出了pcie的控制skp有序集合的链路信息内容(使用128b/130b编码):

应当理解的是,表1-5示出了可以被并入示例rlt数据结构中的链路信息的一些非限制性示例。例如,虽然表1-5中的示例提及了下一代和之后世代的pcie互连(例如,将128b/130b编码用于8gt/s以上的速度),但是本文讨论的rlt原理同样适用于传统pcie互连(例如,在2.5gt/s和5gt/s实现方式中使用8b/10b)、以及其它互连协议和未来的编码方案、以及其它替代系统。因此,可以替代地在对应的rlt数据结构中包括(如在这些其它协议和协议版本中定义的)其它链路信息、以及其它非协议定义的信息。

在一些实现方式中,由一对设备支持的rlt数据结构的实现方式可以定义多种类型的数据结构,并且可以基于活动、链路的状态、或通过数据结构而转换的有序集合的类型以及其它示例,来选择这些类型中的特定类型。例如,可以针对特定互连协议的多种类型的有序集合中的每一种来定义不同的数据结构格式或类型。作为一个示例,在pcie实现方式中,可以定义一种类型的数据结构以在转换或虚拟化训练集合(ts)时使用,并且可以定义另一种类型的数据结构以在虚拟化skp有序集合(skpos)时使用,以及其它示例。

在一些实现方式中,可以利用有序集合,以便促进在一个或两个方向上对具有高速串行i/o(hsio)能力的链路进行训练和同步。在一些情况下,仅rlt数据结构可能不适于替换在训练高速链路时所依赖的有序集合模式。因此,在一些实现方式中,示例转换层或其它逻辑可以识别在有序集合内的在hiso训练中利用的模式,并且可以将从协议栈接收的模式的未经修改版本传递到链路的通道上。作为一个示例,在pcie中,可以继续实现高速接口的有序集合功能可以包括用于建立比特和块/符号锁定的训练有序集合(ts)模式、允许补偿时钟差的skp(跳过)有序集合、电气空闲退出有序集合(eieos)以及其它示例。在一些情况下,有序集合可以包括用于关键链路训练和同步活动(例如,高速i/o应用中的比特锁定和/或符号锁定)的模式(例如,同步模式)、以及用于链路的信息内容两者。在这样的情况下,转换层或其它逻辑可以识别在所生成的有序集合中的模式和链路信息并且将该模式与链路模式分离,以其原始形式发送该模式,同时将链路信息内容重新封装在数据结构中以在链路上与模式分开发送(例如,在发送模式之后),以及其它示例。例如,在一些情况下,如果在有序集合中的模式或信息对于高速链路训练是关键的,则转换逻辑可以允许在链路上按原样发送整个有序集合,而不是修改有序集合来分离特定模式。在一些情况下,除了允许完整地发送有序集合之外,转换逻辑还可以发送具有链路信息内容的数据结构(例如,即使这样做对于被包含在有序集合中的信息而言是冗余的),例如,如果链路的另一侧的端口(例如,具有互连协议栈的经修改的版本)仅具有用于处理在具有特定格式的数据结构中被接收时的链路信息内容的逻辑的话,以及其它示例实现方式。在其它实现方式中,由互连协议定义的一些有序集合可以不包括链路信息内容。例如,pcie电气空闲有序集合(eios)本身可能不包含任何实质性信息(除了标识发射机正在转变到电气空闲之外)。在这样的情况下,可以允许在实际链路的通道上发送完整的有序集合(以及其它示例实现方式),而不是将有序集合转换为数据结构。

虽然转换层的一些实现方式可以允许将在一些有序集合中的序列以其原始形式转发到物理链路上以促进高速链路训练,但是在一些替代实施例中,由底层互连协议定义的高速链路训练序列可能不适于在实际的物理链路上执行高速训练。例如,物理介质可能具有与互连协议的定义和要求不一致的特性或以与互连协议的定义和要求不一致的速度进行操作。因此,在一些实现方式中,示例转换层可以检测由互连协议定义的用于执行一个或多个链路训练活动的序列的存在性,并且将该序列替换为更适合于在正被用于链路的实际的物理通信介质上执行链路训练活动的不同序列。例如,可以在转换层处定义映射,以标识和替换协议定义的链路训练序列,其中替代链路训练序列被设计为服务于相同目的,但是针对链路的实际特性进行了优化,以及其他示例性特征和实现方式。

在一些实现方式中,互连协议可以规定:被包含在有序集合中的链路信息是通过暗示来与该链路信息在其上被发送的通道相关联的。例如,协议可以定义特定的有序集合的单独实例将在链路的训练期间在每个通道上被发送,其中有序集合的每个通道的实例携带特定于其在之上被发送的通道的信息(例如,均衡化设置、配置参数等)。然而,在rlt数据结构的其它实现方式中,数据结构(和支持逻辑)可以被配置为在链路的一个或多个通道上发送每个数据结构,并且被包含在数据结构中的链路信息可以专门涉及除了用于传送数据结构的通道中的一个或多个通道以外的通道。例如,包含针对链路的一个特定通道的链路信息内容的单个数据结构的比特可以通过剥离、变换(swizzling)或以其它方式使用所有可用通道来发送。在其它实现方式中,数据结构通常可以包含与多个通道或物理介质相对应的链路信息(例如,其中该介质不包括多个通道或者利用“基于非通道”的拓扑(例如,同轴介质)),并且可以使用一个或多个通道(或其它导体)来发送该数据结构,以及其它示例实现方式。

转向图8a-8c的示例,示出了简化框图800a-c,其示出了在物理通信介质上发送示例rlt数据结构。例如,在图8a-8c的示例中的每个示例中,第一设备605将在非对称连接上与第二设备610进行通信。例如,设备a605可以利用一个发送通道805和四个接收通道810a-d。以互补的方式,设备b610可以包括单个接收通道815和四个发送通道820a-d。应当理解的是,在这些示例中示出的数量和拓扑是出于说明的目的,并且基于rlt的链路可以潜在地利用任何数量的通道以及在上游通道与下游通道之间的任何比率,以及其它替代实施例。此外,尽管图8a-8c的示例分别描述了其中物理介质利用多个通道的情况,但是应当理解的是,根据本文讨论的原理,还可以开发和使用rlt层,以使得能够使用基于非通道的链路拓扑。

在图8a的示例中,示出了如下的示例:其中驻留在协议栈本身中的rlt层或者设备a和b(605、610)中的每个设备的转换层被配置为生成rlt数据结构,以有效地虚拟化根据底层通用互连协议(例如,pcie)而生成的特定于通道的有序集合。例如,可以生成从设备610发送到设备605的rlt数据结构830a,以使得每个数据结构(在830a中)包括针对这些通道中的用于实现链路的特定通道的链路信息。此外,如利用示例数据结构830a所示,在可能的情况下,携带针对特定通道的链路信息的数据结构可以是使用该相同的通道来发送的。然而,在非对称连接的示例中,诸如在图8a中,可能期望返回特定于通道的数据结构(例如,以辅助生成的合成有序集合以供底层协议栈消耗,或者在链路训练期间作为握手或确认的一部分,等等),但是,在(例如,从设备605到设备610的)返回方向上的通道数量可以小于在前向方向上的数量。因此,不是在专用通道上发送特定于通道的rlt数据结构,而是可以使用特定的物理通道来携带具有针对不同通道或甚至多个不同通道的信息的数据结构(例如,840a)(例如,其中通道被用于对多个通道的数据结构进行复用,诸如在图8a的示例中)。例如,在各示例(诸如在图8a中所示的示例)中,由数据结构830a携带的特定于通道的链路信息可以以每通道为基础来应用于设备610,而应用于设备605的链路信息(例如,用于改变速度的请求)可以通过在使用通道发送的数据结构840a中包括的多个通道的有价值的链路信息来有效地复制,以及其它示例实现方式。

如上所讨论的,rlt层的一些实现方式可以携带针对一个或多个特定通道的链路信息。尽管有时隐式地定义给定有序集合对于特定通道的适用性(例如,通过在对应通道上发送该有序集合),但是在rlt数据结构的实现方式中可能不要求这样。实际上,在其中数据结构没有被定义为在特定的对应通道上被发送但是包括特定于通道的链路信息内容的情况下,数据结构可以被格式化为包括用以标识该数据结构的链路信息适用于哪个特定通道的字段(例如,通过通道号)。在这样的情况下,可以使用多个rlt数据结构,其中每个数据结构对应于并且标识其对应的通道,以及其它示例实现方式。例如,rlt数据结构可以包括诸如“适用于”字段之类的字段,以指示该数据结构的链路信息涉及哪个(哪些)通道,以及其它示例实施例。

虽然rlt层的一些实现方式可以被配置为在各个通道上发送各个数据结构(例如,甚至在数据结构携带针对与用于发送数据结构的通道不同的通道的信息的情况下),但是在其它实现方式中,rlt层可以利用多个通道来发送单个数据结构,诸如在图8b的示例中所示。例如,与在图8a的示例中一样,可以提供被配置为携带特定于通道的链路信息的示例rlt数据结构(例如,830b)(例如,映射到由底层协议栈所生成的对应的有序集合)。然而,在一些实现方式中,不是使用单个通道来发送rlt数据结构,而是可以例如通过剥离跨链路的多个通道的数据结构的比特,使用介质的多个(或所有可用)通道来发送单个数据结构(例如,如利用数据结构830b所示)。在这样的实现方式中,在非对称连接的另一侧仅维持单个通道的情况下,这种拓扑可能需要使用单个通道来发送数据结构(例如,840b),以及其它示例。此外,虽然图8a-8b的示例描述了携带针对单个通道或者与底层协议的有序集合的单个实例相对应的链路信息的rlt数据结构,但是应当理解的是,数据结构的格式和其被定义为携带的链路信息可能不是如此约束的。实际上,可以定义rlt层以实现对非常规、专有和非传统链路的训练,并且对于这样的用例,对应的rlt数据结构的格式和内容可以类似地是开放且灵活的。例如,如图8c的示例中所示,在一些实现方式中,数据结构(例如830c、840c)可以被定义为携带用于训练对应介质所需要的任何链路信息,在一些情况下,该介质对于个体通道是不可知的;在同一数据结构内包括针对多个通道的链路信息;包括与链路的实际训练无关的、但是可能对于rlt层在构建合成有序集合以将链路训练结果传送给底层协议栈时是有用的链路信息,以及其它示例替代和实施例。

实际上,(例如,在一个或多个通道上)发送rlt数据结构的形式和方式在实现方式之间可能有很大不同。例如,rlt数据结构可以被格式化和传送为协议的经修改的版本或虚拟化协议的有序集合,被格式化和传送为不同类型的类似于分组的结构,以及其它示例。无论针对特定的rlt层实现方式定义了哪种数据结构形式,都应当统一定义总体结构,使得可以可靠地对数据结构进行编码和解码,并且允许转换层实现方式重构在底层协议栈中(例如,对于传统的对称pcie链路)定义的等效有序集合。在各实现方式中,在实际链路应用较低速度或者以其它方式将不利用训练序列来执行关键的高速i/o任务(例如,比特锁定和符号锁定)的情况下,可以利用类似于分组的rlt数据结构(放弃这种序列)。在其它情况下,可以由rlt层生成并且发送高速训练序列和数据结构的混合,以实现高速链路训练。在其它示例中,可以将rlt数据结构作为针对与另一rlt层相关联并且由另一rlt层消耗的“寄存器”的写操作进行传送,以及其它示例实现方式。在这样的情况下,rlt层(例如,被实现为转换层)不仅可以转换在链路上发送的数据,而且还可以有效地实现低速连接(和非对称连接),其中底层协议栈将该链路假定为并且看作高速对称链路,以及其它示例特征。

可以基于rlt适于训练和配置的链路的物理和电气特性来确定rlt层实现方式的性质和特征。同样,由给定的rlt层实现方式所生成和利用的数据结构格式可以由要训练的对应链路的特性来主导。在一些示例中,可能有必要结合rlt层的应用来放宽对底层互连协议(例如,pcie)的定时要求,以便适应可用于非对称连接的减小的带宽。例如,对于高度非对称的配置,可能有必要修改用于nak和流控制的定时以及可能的其它机制,诸如完成超时机制。如果与现有实现方式的兼容性是重要的,则可以避免对协议定义的特征的这种改变或宽松处理。然而,在其它情况下,兼容性可能不太关键,从而期望在一些实现方式中更广泛地放宽定时要求(例如,对于对称和非对称配置),例如以避免对于特殊情况处理的需求。另外,在一些实现方式中,对rlt层的引入可能导致对合规性机制的修改(例如,用于非对称配置中的操作)。此外,除了通过引入rlt层带来的对物理层操作的改变之外,在一些实现方式中,还可以在更高的协议层(例如,数据链路和事务层)处进行改变。例如,针对底层协议定义的寄存器可能假定对称链路,并且为了向后兼容性,这些被实现以便甚至在非对称配置中也反映出对称链路(例如,犹如该链路实际上是对称的并且按照非对称连接的更高带宽在两个方向上操作)。因此,在一些实现方式中,可以实现新的额外的寄存器(例如,通过扩展能力结构),以提供对非对称连接的发现、配置和管理(其中这样的能力将通过对应的rlt层来启用),以及其它示例改变和特征。

转向图9,示出了简化框图900,其示出了示例系统,该示例系统利用一个或多个rlt层逻辑块(例如,620a-b)来灵活地利用被设计为实现特定互连协议的协议栈的特定互连协议逻辑(例如,925),以支持潜在的多种不同类型的链路(例如,930、935、940),包括不符合该特定协议的链路特性的链路(例如930、935)(例如,由于非对称性(例如,在数据速度、通道数量、接收和发送路径中的总体带宽等方面)、链路的通信介质的电气或物理特性、经修改的链路训练特征、经修改的状态机等)。例如,可以提供设备905以实现可配置或可编程的交换机设备、片上系统(soc)设备或其它计算设备。可以将互连协议块925连同可以被灵活地设置以实现一个或多个端口的一组发送通道和接收通道一起提供。在该示例中,互连协议块925可以用于实现通用i/o协议,通用i/o协议定义针对基于该协议的链路的某些原生特性(例如,某些数据速度、某些物理传输介质(例如,某些电气或物理特性)、在发送和接收方向上的对称带宽等)。然而,某些应用可能涉及将设备905连接到其它设备(例如910、915、920),其中至少一些设备具有功能或消耗者或者生成数据,这使得通用互连协议的各方面是次优的。

在图9的示例中,灵活的设备905可以利用互连协议块925的原生功能,来实现如下的端口:该端口完全符合互连协议块925的原生功能,并且使用所述原生功能来实现符合规范的链路940,而不需要或使用rlt层(例如,其中链路940是使用根据特定互连协议的标准有序集合来训练和建立)。然而,到其它设备(例如,910、915)的连接(例如930、935)可以基于设备910、915的特性,来最佳地利用定制的或以其它方式不符合规范的链路。例如,设备(例如,910)可能具有非对称带宽需求,诸如显示设备、相机设备、存储设备、机器学习加速器或其它设备。因此,可以定义和实现rlt层(例如,作为转换层620a),其适于促进训练和建立适合设备910的带宽需求的非对称链路连接930。rlt层620a可以对特定数据结构进行编码和解码,该特定数据结构将代替特定互连协议的有序集合用来实现非对称链路,同时仍然利用该协议的特征和较高层(例如,链路层、事务层、协议层等)。例如,rlt层620a可以将由协议块925生成的以供在链路930上使用的有序集合转换为对应的数据结构,并且将从设备910接收的数据结构转换为合成有序集合,以供互连协议块925消耗。

不同的rlt层可以用于实现不同类型的连接。例如,可以利用不同的rlt层(例如,620b)来建立与设备915的连接935。该示例设备915可以具有纯单向带宽特性(例如,作为传感器设备,其仅生成数据而没有控制路径,以及其它示例)。基于设备之间的功能差异,用于该设备915的最佳连接可能与设备910的最佳连接不同。因此,可以定义和实现另一rlt层(例如,620b)(例如,作为转换层),以生成用于实现对应链路的训练和建立的数据结构,同时利用特定互连协议(例如,pcie)。在该示例中,rlt层620b可以有效地忽略协议块925针对从设备905到设备915的下游链路所生成的任何有序集合,因为实际上没有在该方向上实现任何链路。但是,rlt层620b可以支持生成合成有序集合以“欺骗”协议块925,使其相信不仅存在这样的下游链路,而且其符合针对特定互连协议所定义的特性。同样,rlt层620b可以将针对上游端口所生成的有序集合转换为数据结构,该数据结构包括适合训练和建立单向连接935的链路信息,以及其它示例。

如通过在图9中所示的示例应当理解的,rlt层可以被有利地实现并且用于灵活地扩展通用互连协议的应用,以促进各种范围的不同链路,包括以某种方式不符合在互连协议中定义的标准的那些链路。在图9的示例中,可以以编程方式实现rlt层,以使互连块925能够被扩展为支持各种类型的连接(包括标准连接(例如,940)。这些连接(例如,930、940、945)可以实现与类似多样的设备(例如,910、915、920)的优化通信。在连接(例如,930、935)利用rlt层的情况下,下游设备(例如,910、915)可以将类似的对应的rlt层在本地实现为该设备的默认互连电路,或者也实现为转换层(例如,以修改底层通用互连栈的标准实现(例如,类似于互连协议模块925)),以及其它示例。实际上,可以定义底层互连协议的一些实现方式,以便也在本地采用rlt机制(例如,作为定义的能力),例如以将传统机制(例如,在协议的较早期版本中定义的链路训练)替换成更大的结构和通用性,这可以用于简化链路训练状态机和其相关联的协议,同时提供用于添加功能的清楚方式,以及其它示例优势和实现方式。

前述公开内容已经呈现了用于灵活地扩展示例互连协议的链路训练能力的多个示例实施例。应当理解的是,在不脱离在本公开内容中包含的更一般性的原理的情况下,除了以上标识的那些实现方式之外,还可以提供其它实现方式。例如,虽然参考要求带宽对称或其它标准特征的协议(例如,pcie或基于pcie的协议)描述了本文所讨论的一些示例,但是应当理解的是,可以对诸如以下各项的其它互连协议作出类似的对应增强(和对应的rlt层):opencapitm、gen-ztm、upi、通用串行总线(usb)、用于加速器的高速缓存一致性互连(ccixtm)、高级微设备(advancedmicrodevicetm(amdtm))infinitytm、公共通信接口(cci)或高通(qualcommtm)的centriqtm互连、以及其它互连协议。

注意的是,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为特定说明,以下附图提供了用于利用如本文描述的本发明的示例性系统。随着更详细地描述下面的系统,公开了、描述了并且根据上面的讨论回顾了多种不同的互连。并且显而易见的是,上述进展可以应用于那些互连、结构或架构中的任何一者。

参照图10,描绘了用于包括多核处理器的计算系统的框图的实施例。处理器1000包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(soc)或用于执行代码的其它设备。在一个实施例中,处理器1000包括至少两个核,即核1001和1002,其可以包括非对称核或对称核(所示出的实施例)。然而,处理器1000可以包括可以是对称或非对称的任何数量的处理元件。

在一个实施例中,处理元件是指用以支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核、和/或能够保持处理器的状态(诸如执行状态或架构状态)的任何其它元件。换句话说,在一个实施例中,处理元件是指能够独立地与诸如软件线程、操作系统、应用或其它代码之类的代码相关联的任何硬件。物理处理器(或处理器插槽)通常是指潜在地包括任意数量的其它处理元件(诸如核或硬件线程)的集成电路,。

核通常是指位于集成电路上的能够维护独立架构状态的逻辑,其中每个独立维护的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常是指位于集成电路上的能够维护独立架构状态的任何逻辑,其中独立维护的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其它资源专用于架构状态时,硬件线程和核的命名法之间的界线重叠。然而,操作系统经常将核和硬件线程视为单独的逻辑处理器,其中操作系统能够单独地调度在每个逻辑处理器上的操作。

如图10所示,物理处理器1000包括两个核,即核1001和1002。此处,核1001和1002被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核1001包括无序处理器核,而核1002包括有序处理器核。然而,可以从任何类型的核中单独地选择核1001和1002,诸如本地核、软件管理核、适于执行本地指令集架构(isa)的核、适于执行转换指令集架构(isa)的核、协同设计的核或其它已知的核。在异构核环境(即,非对称核)中,某种形式的转换(例如二进制转换)可以用于在一个或两个核上调度或执行代码。但是为了进一步讨论,下面更详细地描述了在核1001中示出的功能单元,因为核1002中的单元在所描绘的实施例中以类似的方式操作。

如图所示,核1001包括两个硬件线程1001a和1001b,它们也可以被称为硬件线程槽1001a和1001b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1000视为四个单独的处理器,即,能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上提到的,第一线程与架构状态寄存器1001a相关联,第二线程与架构状态寄存器1001b相关联,第三线程可以与架构状态寄存器1002a相关联,并且第四线程可以与架构状态寄存器1002b相关联。此处,如上所述,架构状态寄存器(1301a、1001b、1002a和1002b)中的每一者都可以被称为处理元件、线程槽或线程单元。如图所示,架构状态寄存器1001a被复制在架构状态寄存器1001b中,因此各个架构状态/上下文能够被存储用于逻辑处理器1001a和逻辑处理器1001b。在核1001中,还可以为线程1001a和1001b复制其它较小的资源,诸如分配器和重命名器块1030中的指令指针和重命名逻辑。可以通过分区来共享一些资源,诸如重排序/撤出单元1035中的重排序缓冲区、iltb1020、加载/存储缓冲区和队列。其它资源(诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据tlb1015、执行单元1040、和无序单元1035的部分)潜在地被完全共享。

处理器1000通常包括其它资源,其可以被完全共享,通过分区被共享,或者由处理元件专用/专用于处理元件。在图10中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意的是,处理器可以包括或省略这些功能单元中的任何一者,以及包括未描绘的任何其它已知的功能单元、逻辑或固件。如图所示,核1001包括简化的、代表性的无序(ooo)处理器核。但是在不同的实施例中,可以使用有序处理器。ooo核包括:分支目标缓冲区1020,其用于预测要被执行/采用的分支;以及指令转换缓冲区(i-tlb)1020,其用于存储针对指令的地址转换条目。

核1001还包括耦合到取回单元1020的解码模块1025,其用于对取回的元素进行解码。在一个实施例中,取回逻辑包括分别与线程槽1001a、1001b相关联的单独的定序器。通常,核1001与定义/指定可在处理器1000上执行的指令的第一isa相关联。作为第一isa的一部分的机器代码指令通常包括引用/指定要执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑1025包括进行如下操作的电路:从它们的操作码中识别出这些指令,并且将经解码的指令传递到流水线中,以进行如第一isa定义的处理。例如,如下面更详细地讨论的,在一个实施例中,解码器1025包括被设计为或适于识别诸如事务指令之类的特定指令的逻辑。作为解码器1025的识别的结果,架构或核1001采取特定的预定义动作来执行与适当指令相关联的任务。重要的是要注意,本文描述的任务、块、操作和方法中的任何一项都可以响应于单个或多个指令来执行;其中一些指令可能是新指令或旧指令。注意的是,在一个实施例中,解码器1026识别相同的isa(或其子集)。替代地,在异构核环境中,解码器1026识别第二isa(第一isa的子集或不同isa)。

在一个示例中,分配器和重命名器块1030包括分配器,其用于预留资源,诸如用于存储指令处理结果的寄存器文件。然而,线程1001a和1001b潜在地能够无序执行,其中分配器和重命名器块1030还预留其它资源,诸如用于跟踪指令结果的重排序缓冲区。单元1030还可以包括寄存器重命名器,其用于将程序/指令参考寄存器重命名为处理器1000内部的其它寄存器。重排序/撤出单元1035包括用于支持无序执行以及稍后对被无序执行的指令的有序撤出的组件,诸如上述重排序缓冲区、加载缓冲区和存储缓冲区。

在一个实施例中,调度器和执行单元块1040包括调度器单元,其用以调度在执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器文件,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其它已知的执行单元。

较低级数据高速缓存和数据转换缓冲区(d-tlb)1050耦合到执行单元1040。数据高速缓存用以存储最近使用/操作的元素,诸如数据操作数,其潜在地被保留在存储器一致性状态中。d-tlb用以存储最近的虚拟/线性到物理地址的转换。作为一个特定示例,处理器可以包括用于将物理存储器分成多个虚拟页的页表结构。

此处,核1001和1002共享对较高级或进一步的高速缓存(诸如与片上接口1010相关联的二级高速缓存)的访问。注意的是,较高级或进一步是指高速缓存级别增加或距执行单元更远。在一个实施例中,较高级的高速缓存是最后一级数据高速缓存(处理器1000上的存储器层级中的最后的高速缓存),诸如二级或三级数据高速缓存。然而,较高级的高速缓存不限于此,因为其可以与指令高速缓存相关联或包括指令高速缓存。替代地,可以在解码器1025之后耦合踪迹高速缓存(一种类型的指令高速缓存)以存储最近解码的踪迹。此处,指令潜在地是指宏指令(即,由解码器识别的通用指令),其可以解码为多个微指令(微操作)。

在所描绘的配置中,处理器1000还包括片上接口模块1010。在历史上,下面更详细地描述的存储器控制器已经被包括在处理器1000外部的计算系统中。在该场景中,片上接口1010用以与处理器1000外部的设备(诸如系统存储器1075、芯片组(通常包括连接到存储器1075的存储器控制器集线器和连接外围设备的i/o控制器集线器)、存储器控制器集线器、北桥、或其它集成电路)进行通信。并且在这种场景下,总线1005可以包括任何已知的互连,诸如多位总线、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线和gtl总线。

存储器1075可以专用于处理器1000或与系统中的其它设备共享。存储器1075的类型的常见示例包括dram、sram、非易失性存储器(nv存储器)和其它已知存储设备。注意的是,设备1080可以包括图形加速器、耦合到存储器控制器集线器的处理器或卡、耦合到i/o控制器集线器的数据存储装置、无线收发机、闪存设备、音频控制器、网络控制器或其它已知设备。

然而,最近,随着更多的逻辑和设备被集成在诸如soc之类的单个管芯上,这些设备中的每个设备都可以被并到处理器1000上。例如,在一个实施例中,存储器控制器集线器位于与处理器1000相同的封装和/或管芯上。此处,核的一部分(核上部分)1010包括用于与诸如存储器1075或图形设备1080之类的其它设备进行对接的一个或多个控制器。包括用于与这种设备对接的互连和控制器的配置通常被称为核上(或非核配置)。作为一个示例,片上接口1010包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路1005。但是,在soc环境中,甚至更多的设备(诸如网络接口、协处理器、存储器1075、图形处理器1080和任何其它已知的计算机设备/接口)可以被集成在单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因子。

在一个实施例中,处理器1000能够执行编译器、优化和/或转换器代码1077,以编译、转换和/或优化应用代码1076,以支持本文描述的装置和方法或与其对接。编译器通常包括将源文本/代码转换为目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码进行编译是在多个阶段和多遍中完成的,以将高级编程语言代码转换为低级机器或汇编语言代码。但是,单遍编译器仍然可以用于简单编译。编译器可以利用任何已知的编译技术并且执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。

较大的编译器通常包括多个阶段,但是最常见的是,这些阶段被包括在两个通用阶段中:(1)前端,即通常在其中可以发生句法处理、语义处理以及某种转换/优化,以及(2)后端,即通常在其中发生分析、转换、优化和代码生成。一些编译器是指说明在编译器的前端和后端之间的划定模糊的中间部分。因此,对编译器的插入、关联、生成或其它操作的提及可以发生在任何上述阶段或遍以及编译器的任何其它已知阶段或遍中。作为说明性示例,编译器潜在地在一个或多个编译阶段插入操作、调用、函数等,诸如在编译的前端阶段插入调用/操作,并且然后在转换阶段期间将调用/操作转换为较低级代码。注意的是,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化代码以在运行时期间执行。作为特定的说明性示例,可以在运行时期间动态地优化二进制代码(已被编译的代码)。此处,程序代码可以包括动态优化代码、二进制代码或其组合。

与编译器类似,诸如二进制转换器之类的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的提及可以是指:(1)动态地或静态地执行编译器程序、优化代码优化器、或转换器,以编译程序代码,维护软件结构,执行其它操作,优化代码,或转换代码;(2)执行包括操作/调用的主程序代码,诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如库),以维护软件结构,执行与其它软件相关的操作,或优化代码;或(4)其组合。

现在参照图11,示出的是根据本发明的实施例的另一系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每个处理器可以是处理器的某个版本。在一个实施例中,1152和1154是诸如高性能架构的串行点对点相干互连结构的一部分。因此,本发明可以在qpi架构内实现。

虽然被示为仅具有两个处理器1170、1180,但是应当理解的是,本发明的范围不限于此。在其它实施例中,在给定处理器中可以存在一个或多个额外处理器。

示出了分别包括集成存储器控制器单元1172和1182的处理器1170和1180。处理器1170还包括点对点(p-p)接口1176和1178作为其总线控制器单元的一部分;类似地,第二处理器1180包括p-p接口1186和1188。处理器1170、1180可以使用p-p接口电路1178、1188,经由点对点(p-p)接口1150交换信息。如图11中所示,imc1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,其可以是本地附接到相应处理器的主存储器的部分。

处理器1170、1180各自使用点对点接口电路1176、1194、1186、1198,经由各个p-p接口1152、1154与芯片组1190交换信息。芯片组1190还沿着高性能图形互连1139,经由接口电路1192与高性能图形电路1138交换信息。

共享高速缓存(未示出)可以被包括在任一处理器中或两个处理器之外;但是经由p-p互连与处理器连接,使得可以将任一处理器或两个处理器的本地高速缓存信息存储在共享高速缓存中(如果将处理器置于低功率模式的话)。

芯片组1190可以经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(pci)总线,或诸如快速pci总线或另一第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如图11所示,各种i/o设备1114连同总线桥接器1118一起耦合到第一总线1116,总线桥接器1118将第一总线1116耦合到第二总线1120。在一个实施例中,第二总线1120包括低引脚数(lpc)总线。在一个实施例中,各种设备耦合到第二总线1120,包括例如键盘和/或鼠标1122、通信设备1127和通常包括指令/代码和数据1130的存储单元1128(诸如磁盘驱动器或其它大容量存储设备)。此外,音频i/o1124被示为耦合到第二总线1120。注意的是,其它架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图11的点对点架构,系统可以实现多位总线或其它这样的架构。

尽管已经关于有限数量的实施例描述了本发明,但是本领域技术人员将理解来自此的许多修改和变化。所附的权利要求旨在覆盖落入本发明的真实精神和范围内的所有这样的修改和变化。

设计可以经历从创建到仿真到制造的各个阶段。表示设计的数据可以用多种方式来表示该设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到了表示各种设备在硬件模型中的物理位置的数据级别。在使用传统的半导体制造技术的情况下,表示硬件模型的数据可以是指定各种特征在用于生产集成电路的掩模的不同掩模层上的存在或不存在的数据。在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或诸如盘之类的磁或光存储装置可以是机器可读介质,其用于存储经由光波或电波发送的信息,光波或电波被调制或以其它方式被生成为发送这样的信息。当发送指示或携带代码或设计的电载波时,就执行对电信号的复制、缓冲或重传来说,进行新的复制。因此,通信提供商或网络提供商可以至少暂时地在有形的机器可读介质上存储体现本发明的实施例的技术的制品,诸如被编码到载波中的信息。

如本文所使用的模块是指硬件、软件和/或固件的任何组合。作为一个示例,模块包括与非暂时性介质相关联的硬件(诸如微控制器),非暂时性介质用于存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的提及是指被专门配置为识别和/或执行被保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,对模块的使用是指包括代码的非暂时性介质,该代码专门适于被微控制器执行以执行预定操作。并且如可以推断的,在又一个实施例中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。通常被示为分开的模块边界通常是变化的并且潜在地重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,对术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或者诸如可编程逻辑器件之类的其它硬件。

在一个实施例中,使用短语“被配置为”是指布置、装配、制造、提供销售、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有在操作的装置或其元件仍然“被配置为”执行指定任务,如果其被设计、耦合和/或互连以执行所述指定任务的话。作为一个纯说明性示例,逻辑门可以在操作期间提供0或1。但是“被配置为”向时钟提供使能信号的逻辑门不包括可能提供1或0的每个潜在逻辑门。替代地,该逻辑门是按照在操作期间1或0输出将启用时钟的某种方式耦合的逻辑门。再次注意的是,使用术语“被配置为”不要求操作,而是替代地聚焦在装置、硬件和/或元件的潜在状态上,其中在潜在状态中,装置、硬件和/或元件被设计为:当该装置、硬件和/或元件正在操作时,执行特定任务。

此外,在一个实施例中,使用短语“用以(to)”、“能够/用以(to)”和/或“可操作为”是指某个装置、逻辑、硬件和/或元件是按照使得能够以指定的方式使用该装置、逻辑、硬件和/或元件这样的方式来设计的。如上所述,注意的是,在一个实施例中,使用“用以”、“能够”或“可操作为”是指装置、逻辑、硬件和/或元件的潜在状态,其中该装置、逻辑、硬件和/或元件没有在操作,但是按照使得能够以指定的方式使用装置的方式来设计的。

如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,对逻辑级别、逻辑值(logicvalue)或逻辑值(logicalvalue)的使用也被称为1和0,它们仅表示二进制逻辑状态。例如,1是指逻辑高电平,并且0是指逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其它表示。例如,十进制数字十也可以被表示为二进制值1010和十六进制字母a。因此,值包括能够在计算机系统中保存的信息的任何表示。

此外,状态可以通过值或值的部分来表示。作为一个示例,第一值(诸如逻辑1)可以表示默认或初始状态,而第二值(诸如逻辑0)可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而经更新的值潜在地包括低逻辑值,即设置。注意的是,值的任何组合可以用于表示任何数量的状态。

上面阐述的方法、硬件、软件、固件或代码的实施例可以经由被存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括以由诸如计算机或电子系统之类的机器可读的形式来提供(即,存储和/或发送)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(ram),诸如静态ram(sram)或动态ram(dram);rom;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂时性(经传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储设备;等等,它们将与可以从其接收信息的非暂时性介质区分开。

用于对逻辑进行编程以执行本发明的实施例的指令可以被存储在系统中的存储器内,诸如dram、高速缓存、闪存或其它存储装置。此外,指令可以经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可以包括用于以由机器(例如,计算机)可读的形式来存储或发送信息的任何机制,但不限于用于在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息时使用的软盘、光盘、压缩盘、只读存储器(cd-rom)、以及磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存或有形的机器可读存储。因此,计算机可读介质包括适合于以由机器(例如,计算机)可读的形式来存储或发送电子指令或信息的任何类型的有形机器可读介质。

以下示例涉及根据本说明书的实施例。示例1是一种装置,包括:协议电路,其用以实现特定互连协议的协议栈,其中,所述协议电路用以生成根据所述特定互连协议而定义的一组有序集合,所述一组有序集合是针对用以将第一设备耦合到第二设备的链路来生成的,并且所述一组有序集合包括用于所述链路的链路信息;以及转换层电路,其用以进行以下操作:根据所述一组有序集合来生成用以包括所述链路信息的至少一部分的至少一个数据结构;以及使得将所述数据结构代替所述一组有序集合来在所述链路上从所述第一设备被发送到所述第二设备。

示例2包括根据示例1所述的主题,其中,所述链路包括非对称链路,并且所述特定互连协议假定所述链路包括对称链路。

示例3包括根据示例1-2中任一项所述的主题,其中,所述一组有序集合包括特定有序集合的多个实例,所述特定有序集合的所述多个实例中的每个实例旨在用于所述链路的多个通道中的相应通道上被发送,所述数据结构中的所述链路信息包括用于所述多个通道中的特定通道的链路信息,并且所述链路中的两个或更多个通道被用来发送所述数据结构。

示例4包括根据示例3所述的主题,其中,所述链路实际包括少于所述多个通道的通道。

示例5包括根据示例3-4中任一项所述的主题,其中,所述数据结构包括用以标识所述链路信息与所述特定通道有关的通道标识符。

示例6包括根据示例3-5中任一项所述的主题,其中,所述至少一个数据结构包括两个或更多个数据结构,所述两个或更多个数据结构中的第一数据结构包括用于所述特定通道的链路信息,并且所述两个或更多个数据结构中的第二数据结构包括用于所述多个通道中的另一通道的链路信息。

示例7包括根据示例1-6中任一项所述的主题,其中,所述一组有序集合中的每个有序集合包括根据所述特定互连而定义的一组字段,所述一组字段包括所述链路信息,并且所述数据结构包括与所述一组字段的至少一部分相对应的字段。

示例8包括根据示例7所述的主题,其中,所述数据结构中的所述字段还包括用以补充所述一组字段的一个或多个特定字段。

示例9包括根据示例1-8中任一项所述的主题,其中,所述链路包括多个通道,并且所述数据结构用以通过跨所述多个通道剥离所述数据结构的比特来在所述多个通道上被发送。

示例10包括根据示例1-9中任一项所述的主题,其中,所述互连协议包括基于快速外围组件互连(pcie)的协议。

示例11包括根据示例1-10中任一项所述的主题,其中,所述一组有序集合包括模式的一个或多个实例,并且所述转换层电路用以将所述模式与所述链路信息分离,并且除了所述数据结构之外,还在所述链路上发送所述模式。

示例12包括根据示例11所述的主题,其中,所述模式包括高速链路训练序列。

示例13包括根据示例12所述的主题,其中,所述模式被定义为用于在高速链路训练期间的比特锁定或符号锁定中的至少一项。

示例14包括根据示例1-13中任一项所述的主题,其中,所述一组有序集合包括特定类型的有序集合的实例,生成所述数据结构包括:检测所述特定类型的有序集合;识别多种类型的数据结构中的特定类型的数据结构对应于所述特定类型的有序集合;以及根据所述特定类型的数据结构来生成所述数据结构。

示例15包括根据示例1-14中任一项所述的主题,其中,所述链路信息包括以下各项中的一项或多项:用于所述链路的通道的操作参数、链路状态转换信息、以及用于所述链路的运行时状态信息。

示例16包括根据示例1-15中任一项所述的主题,其中,所述转换层电路还用以进行以下操作:从所述第二设备接收第二数据结构,其中,所述第二数据结构包括第二链路信息;以及将所述第二数据结构转换为第二组有序集合,其中,所述第二组有序集合包括合成有序集合;以及将所述第二组有序集合提供给所述互连协议电路。

示例17包括根据示例16所述的主题,其中,所述第二组有序集合是基于所述第二链路信息来生成的。

示例18包括根据示例16-17中任一项所述的主题,其中,所述转换层电路还用以基于所述第二链路信息来参与训练所述链路。

示例19是一种方法,包括:从第一设备的协议电路接收由所述协议电路根据特定互连协议而生成的第一组有序集合,其中,所述一组有序集合是针对用以将所述第一设备耦合到第二设备的链路来生成的,并且所述一组有序集合包括用于所述链路的链路信息;将所述第一组有序集合转换为至少一个第一数据结构,其中,所述第一数据结构包括所述链路信息的至少一部分;以及使得所述第一数据结构代替所述第一组有序集合来在所述链路上被发送,其中,所述链路包括非对称链路。

示例20包括根据示例19所述的主题,其中,所述第一数据结构是根据特定的数据结构格式的,并且所述方法还包括:从所述第二设备接收第二数据结构,其中,所述第二数据结构包括第二链路信息;以及将所述第二数据结构转换为第二组有序集合,其中,所述第二组有序集合包括合成有序集合。

示例21包括根据示例20所述的主题,其中,所述第二组有序集合是基于所述第二链路信息来生成的。

示例22包括根据示例20-21中任一项所述的主题,还包括:基于所述第二链路信息来参与训练所述链路。

示例23包括根据示例20-22中任一项所述的主题,其中,所述链路包括非对称链路,并且所述特定互连协议假定所述链路包括对称链路。

示例24包括根据示例20-23中任一项所述的主题,其中,所述一组有序集合包括特定有序集合的多个实例,所述特定有序集合的所述多个实例中的每个实例旨在用于所述链路的多个通道中的相应通道上被发送,所述数据结构中的所述链路信息包括用于所述多个通道中的特定通道的链路信息,并且所述链路的两个或更多个通道被用来发送所述数据结构。

示例25包括根据示例24所述的主题,其中,所述链路实际包括少于所述多个通道的通道。

示例26包括根据示例24-25中任一项所述的主题,其中,所述数据结构包括用以标识所述链路信息与所述特定通道有关的通道标识符。

示例27包括根据示例24-26中任一项所述的主题,其中,所述至少一个数据结构包括两个或更多个数据结构,所述两个或更多个数据结构中的第一数据结构包括用于所述特定通道的链路信息,并且所述两个或更多个数据结构中的第二数据结构包括用于所述多个通道中的另一通道的链路信息。

示例28包括根据示例20-27中任一项所述的主题,其中,所述一组有序集合中的每个有序集合包括根据所述特定互连而定义的一组字段,所述一组字段包括所述链路信息,并且所述数据结构包括与所述一组字段的至少一部分相对应的字段。

示例29包括根据示例28所述的主题,其中,所述数据结构中的所述字段还包括用以补充所述一组字段的一个或多个特定字段。

示例30包括根据示例20-29中任一项所述的主题,其中,所述链路包括多个通道,并且所述数据结构用以通过跨所述多个通道剥离所述数据结构的比特来在所述多个通道上被发送。

示例31包括根据示例20-30中任一项所述的主题,其中,所述互连协议包括基于快速外围组件互连(pcie)的协议。

示例32包括根据示例20-31中任一项所述的主题,其中,所述一组有序集合包括模式的一个或多个实例,并且所述转换层电路用以将所述模式与所述链路信息分离,并且除了所述数据结构之外,还在所述链路上发送所述模式。

示例33包括根据示例32所述的主题,其中,所述模式包括高速链路训练序列。

示例34包括根据示例33所述的主题,其中,所述模式被定义为用于在所述高速链路训练期间的比特锁定或符号锁定中的至少一项。

示例35包括根据示例20-34中任一项所述的主题,其中,所述一组有序集合包括特定类型的有序集合的实例,生成所述数据结构包括:检测所述特定类型的有序集合;识别多种类型的数据结构中的特定类型的数据结构对应于所述特定类型的有序集合;以及根据所述特定类型的数据结构来生成所述数据结构。

示例36包括根据示例20-35中任一项所述的主题,其中,所述链路信息包括以下各项中的一项或多项:用于所述链路的通道的操作参数、链路状态转换信息、以及用于所述链路的运行时状态信息。

示例37是一种系统,包括用以执行根据示例20-36中任一项所述的方法的单元。

示例38是一种系统,包括:数据处理器;端口,其包括用以实现特定互连协议的协议电路,其中,所述协议电路用以生成根据所述特定互连协议而定义的一组有序集合,所述一组有序集合是针对用以将所述端口耦合到另一端口的链路来生成的,并且所述一组有序集合包括用于所述链路的链路信息;以及转换层电路,其用以进行以下操作:根据所述一组有序集合来生成用以包括所述链路信息的至少一部分的至少一个数据结构;以及使得所述数据结构代替所述一组有序集合来在所述链路上从所述第一设备被发送到所述第二设备。

示例39包括根据示例38所述的主题,其中,所述链路具有不符合所述特定互连协议的属性,并且所述数据结构中的所述链路信息包括基于所述属性的信息。

示例40包括根据示例39所述的主题,还包括第二设备,所述第二设备包括另一端口,其中,所述另一端口包括用以至少部分地基于所述链路信息来解码所述数据结构并且建立所述链路的逻辑。

示例41包括根据示例38-40中任一项所述的主题,其中,所述链路包括非对称链路,并且所述特定互连协议假定所述链路包括对称链路。

示例42包括根据示例38-41中任一项所述的主题,其中,所述一组有序集合包括特定有序集合的多个实例,所述特定有序集合的所述多个实例中的每个实例旨在用于所述链路的多个通道中的相应通道上被发送,所述数据结构中的所述链路信息包括用于所述多个通道中的特定通道的链路信息,并且所述链路的两个或更多个通道被用来发送所述数据结构。

示例43包括根据示例42所述的主题,其中,所述链路实际包括少于所述多个通道的通道。

示例44包括根据示例42-43中任一项所述的主题,其中,所述数据结构包括用以标识所述链路信息与所述特定通道有关的通道标识符。

示例45包括根据示例42-44中任一项所述的主题,其中,所述至少一个数据结构包括两个或更多个数据结构,所述两个或更多个数据结构中的第一数据结构包括用于所述特定通道的链路信息,并且所述两个或更多个数据结构中的第二数据结构包括用于所述多个通道中的另一通道的链路信息。

示例46包括根据示例38-45中任一项所述的主题,其中,所述一组有序集合中的每个有序集合包括根据所述特定互连而定义的一组字段,所述一组字段包括所述链路信息,并且所述数据结构包括与所述一组字段的至少一部分相对应的字段。

示例47包括根据示例46所述的主题,其中,所述数据结构中的所述字段还包括用以补充所述一组字段的一个或多个特定字段。

示例48包括根据示例38-47中任一项所述的主题,其中,所述链路包括多个通道,并且所述数据结构用以通过跨所述多个通道剥离所述数据结构的比特来在所述多个通道上被发送。

示例49包括根据示例38-48中任一项所述的主题,其中,所述互连协议包括基于快速外围组件互连(pcie)的协议。

示例50包括根据示例38-49中任一项所述的主题,其中,所述一组有序集合包括模式的一个或多个实例,并且所述转换层电路用以将所述模式与所述链路信息分离,并且除了所述数据结构之外,还在所述链路上发送所述模式。

示例51包括根据示例50所述的主题,其中,所述模式包括高速链路训练序列。

示例52包括根据示例51所述的主题,其中,所述模式被定义为用于在所述高速链路训练期间的比特锁定或符号锁定中的至少一项。

示例53包括根据示例38-52中任一项所述的主题,其中,所述一组有序集合包括特定类型的有序集合的实例,生成所述数据结构包括:检测所述特定类型的有序集合;识别多种类型的数据结构中的特定类型的数据结构对应于所述特定类型的有序集合;以及根据所述特定类型的数据结构来生成所述数据结构。

示例54包括根据示例38-53中任一项所述的主题,其中,所述链路信息包括以下各项中的一项或多项:用于所述链路的通道的操作参数、链路状态转换信息、以及用于所述链路的运行时状态信息。

示例55包括根据示例38-54中任一项所述的主题,其中,所述转换层电路还用以进行以下操作:从所述第二设备接收第二数据结构,其中,所述第二数据结构包括第二链路信息;以及将所述第二数据结构转换为第二组有序集合,其中,所述第二组有序集合包括合成有序集合;以及将所述第二组有序集合提供给所述互连协议电路。

示例56包括根据示例55所述的主题,其中,所述第二组有序集合是基于所述第二链路信息来生成的。

示例57包括根据示例55-56中任一项所述的主题,其中,所述转换层电路还用以基于所述第二链路信息来参与训练所述链路。

在整个说明书中,对“一个(one)实施例”或“一(an)实施例”的提及意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个(one)实施例中”或“在一(an)实施例中”在整个说明书中的各个地方的出现未必都是指相同的实施例。此外,在一个或多个实施例中,可以以任何合适的方式来组合特定的特征、结构或特性。

在前述说明书中,已经参考特定示例性实施例给出了详细描述。然而,将显而易见的是,在不脱离如在所附的权利要求书中阐述的本发明的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是具有说明性意义而非具有限制性意义。此外,前述对实施例和其它示例性语言的使用未必是指相同的实施例或相同的示例,而可以是指不同且有区别的实施例以及潜在地相同的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1