互连重定时器增强的制作方法

文档序号:16861527发布日期:2019-02-15 19:50阅读:231来源:国知局
互连重定时器增强的制作方法

本公开涉及计算系统,且具体地(而非排他地)涉及点对点互连。



背景技术:

半导体处理和逻辑设计方面的进展已允许可存在于集成电路器件上的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核、多个硬件线程和多个逻辑处理器、以及此类处理器内集成的其它接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可包括任意数量的核、硬件线程、逻辑处理器、接口、存储器、控制器中枢等等。

由于将更多处理功率装配在更小封装中的能力越来越强,更小的计算设备越来越受欢迎。智能手机、平板、超薄笔记本以及其它用户设备已指数地增长。然而,这些更小的设备依赖于服务器进行超出形状因数的数据存储和复杂处理。作为结果,高性能计算市场(即服务器空间)的需求也已经增加。例如,在现代服务器中,典型地不仅存在具有多个核的单个处理器,而且存在多个物理处理器(也称为多个插槽),以用于增加计算能力。但由于处理能力随着计算系统中的设备的数量增长,插槽与其它设备之间的通信变得更关键。

实际上,互连已经从主要处理电通信的更传统的多分支总线增长为便于快速通信的充分发展的互连架构。不幸的是,随着未来处理器在甚至更高速率下消耗的需求,对现有互连架构的能力寄予了相应的需求。

附图说明

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

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

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

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

图5A-5B示出包括一个或超过一个扩展设备的示例链路的简化框图。

图6A-6E示出用于确定链路的一个或超过一个子链路中的错误的测试模式的示例实现的简化框图。

图7示出示例有序集的表示。

图8示出表示链路上的示例断开和重连的简化框图。

图9是示出用于提供多模重定时器的示例技术的流程图。

图10示出重计时器的示例物理层逻辑的简化框图。

图11A-11E是示出结合利用扩展设备实现的链路的示例技术的流程图。

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

图13示出包括多核处理器的计算系统的框图的另一实施例。

图14示出处理器的框图的实施例。

图15示出包括处理器的计算系统的框图的另一实施例。

图16示出包括多个处理器的计算系统的块的实施例。

图17示出实现为芯片上系统(SoC)的示例系统。

具体实施方式

在以下描述中,阐明了众多具体细节,如具体类型的处理器和系统配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线级和操作等,以提供对本发明的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率限制技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本发明。

尽管参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑器件。可将本文中所描述的多个实施例的类似技术和教导应用于也可受益于更佳的能效和节能的其他类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或超极本TM。并且也可用于其他设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其他系统。此外,此处所描述的设备、方法,以及系统也不仅限于物理计算设备,但是,也可以涉及对于节能和效率的软件优化。如将在以下描述中容易变得明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”未来是关键的。

随着计算系统的进步,本文的各组件可变得更加复杂。结果,用于在这些组件之间进行耦合和通信的互连架构也增加了复杂性以确保满足带宽要求来用于最优组件操作。此外,不同的市场细分要求互连架构的不同方面来适合该市场的需求。例如,服务器需要较高的性能,而移动生态系统有时能够牺牲整体性能来换取功率节省。然而,大多数结构的单一目的是使用最大功率节省来提供最高可能性能。在下文中,讨论了多个互连,它们将潜在地从在此描述的本公开的各方面中获益。

一种互连结构架构包括外围部件互连(PCI)快速(Express)(PCIe)架构。PCIe的主要目标是使得来自不同供应商的各组件和器件能够在开放架构中互操作,横跨多个市场细分;客户机(台式机和移动)、服务器(标准和企业),以及嵌入式和通信设备。PCI快速是针对各种各样的将来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性,如其使用模型、加载-存储架构、以及软件接口,已通过其各版本得到维持,而先前的并行总线实现已被高度可伸缩、完全串行的接口所替换。PCI快速的更新近版本利用点对点互连、基于交换机的技术、以及分组化协议的进步,来产生新的性能水平和特征。功率管理、服务质量(QoS)、热插拔/热切换支持、数据完整性、以及出错处理是PCI快速所支持的高级特征中的一些。

参考图1,示出了包括互连一组组件的点对点链路的结构的实施例。系统100包括耦合到控制器中枢115的处理器105和系统存储器110。处理器105包括任何处理元件,如微处理器、主处理器、嵌入式处理器、协处理器、或其他处理器。处理器105通过前侧总线(FSB)106耦合到控制器中枢115。在一个实施例中,如下所述,FSB 106是串行点对点互连。在另一实施例中,链路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/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、以及其他输入/输出设备。通常,在PCIe常用语中,诸如设备,被称为端点。虽然并未具体示出,但设备125可包括用于支持传统或其他版本PCI设备的PCIe到PCI/PCI-X桥接器。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是包括事务层205、链路层210、以及物理层220的PCIe协议栈。接口,诸如图1中的接口117、118、121、122、126、以及331,可被表示为通信协议栈200。表示为通信协议栈也可被称为实现/包括协议栈的模块或接口。

PCI Express使用分组在各组件之间传达信息。分组被形成在事务层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。在所示示例中,全局标识符字段302被示为包括局部事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符302对所有未完成请求而言是唯一的。

根据一个实现,局部事务标识符字段308是由发出请求的代理所生成的字段,并且它对于需要对该发出请求的代理来完成的所有未完成的请求而言是唯一的。此外,在该示例中,源标识符310唯一地标识PCIe分层结构内的请求者代理。因此,与源ID 310一起,局部事务标识符308字段提供事务在分层结构域内的全局标识。

属性字段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传输码,其中10位码元被传送/接收。在此,特殊码元被用于将分组分成各个帧223。另外,在一个示例中,接收机还提供从传入串行流恢复的码元时钟。

如上所述,虽然参考PCIe协议栈的特定实施例讨论了事务层205、链路层210以及物理层220,但分层协议栈不限于此。实际上,可包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于将分组序列化的第二层,即链路层;以及用于传送分组的第三层,即物理层。作为特定示例,利用通用标准接口(CSI)分层协议。

接着参考图4,示出了PCIe串行点对点结构的实施例。虽然示出了PCIe串行点对点链路的实施例,但串行点对点链路不限于此,因为它包括用于传送串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个低电压的、差分地驱动的信号对:传送对406/411和接收对412/407。因此,设备405包括用于将数据传送给设备410的传输逻辑406和用于从设备410接收数据的接收逻辑407。换言之,两个传送路径(即,路径416和417)和两个接收路径(即,路径418和419)被包括在PCIe链路中。

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

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

在一些实现中,诸如PCIe兼容链路之类的链路可包括一个或超过一个重定时器或诸如中继器之类的其它扩展设备。重定时器设备(或简称为“重定时器”)可包括接收和重传(重定时)数字I/O信号的有源电子设备。重定时器可用于扩展可与数字I/O总线一起使用的信道的长度。重定时器可以是协议感知的、软件透明的、并且能够执行链路均衡过程(诸如PCIe的链路均衡过程)。包含一个或超过一个重定时器的链路可形成两个或超过两个分开的电气子链路,这两个或超过两个分开的电气子链路的数据率与由采用相似协议但没有重定时器的链路实现的数据率可比拟。例如,包括单个重定时器的链路可形成具有两个分开的子链路的链路,各个子链路在8.0GT/s或更高速率下工作。

然而,存在其它扩展设备,这些扩展设备中的一些具有与一些通信协议的互操作性问题。作为示例,一些中继器可能不支持PCIe 3.0的链路均衡协议。此外,一些应用倾向于利用更长物理长度的信道,这些应用利用扩展设备来实现这样的信道长度。这些趋势以及其它趋势已使得重定时器在许多系统中成为愈发重要的设备。

图5A-5B示出包括一个或超过一个重定时器的示例链路的简化框图500a-b。例如,在图5A中,将第一组件505(例如上游组件)连接至第二组件510(例如下游组件)的链路可包括单个重定时器515a。第一子链路520a可将第一组件505连接至重定时器515a,第二子链路520b可将重定时器515a连接至第二组件。如图5B中所示,可利用多个重定时器515a、515b来扩展链路。可通过两个重定时器515a、515b来定义三个子链路520a-c,其中第一子链路520a将第一组件连接至第一重定时器515a,第二子链路将第一重定时器515a连接至第二重定时器515b,并且第三子链路520c将第二重定时器515b连接至第二组件。

如图5A-5B中的示例中所示,重定时器可包括两个伪端口,并且这些伪端口可动态地确定他们相应的下游/上游取向。每个重定时器515a、515b可具有上游路径和下游路径。此外,重定时器515a、515b可支持包括转发模式和执行模式的工作模式。在一些实例中,重定时器515a、515b可解码在子链路上接收的数据,并将它将要在另一子链路上向下游转发的数据重新编码。在一些情况下,重定时器可修改它接收的数据中的一些值(比如在处理和转发有序集数据时)。此外,重定时器潜在地能够支持任何宽度选项作为其最大宽度,诸如由诸如PCIe之类的规范所定义的宽度选项的集合。

在一些实例中,错误会在信道上出现。当利用一个或超过一个重定时器时,链路包括多个子链路,从而这些子链路中的任一个子链路上的错误会导致对于整个链路检测到错误。可提供测试模式,该测试模式允许在子链路层级确定系统内的错误位置,使得在包括一个或超过一个重定时器的链路中标识特定的子链路错误。受影响的子链路的标识可用于对该链路执行的除错过程。

图6A-6E示出示例框图600a-e,示出用于确定信道中的电气子链路中的哪些正在该信道中产生错误的测试模式的示例实现。在图6A的示例中,可进入测试模式,并且测试模式可定义将要横跨(例如第一端点的)下游端口605与(例如另一端点的)上游端口610之间的信道并且经由重定时器615发送的标准化信号。第一端点(例如605)(诸如根端口)可发送包含已定义的数据序列620a以及随后的错误报告序列625a的信号。重定时器615接收该信号630并确定该序列620a是否与预期的序列匹配。如果序列625a与对于测试模式定义的该序列不匹配,则重定时器615将该偏差标识为错误。

在接收信号630之后,重定时器615进而可产生与测试模式相关的进一步信号635。在一种实现中,在信号635中,重定时器615将复制相同的已定义序列(在620b)。重定时器615不复制在信号630中接收的序列620a,而是再重新产生对于测试模式定义的序列(例如620b)。这可用于隔绝子链路错误,使得包含错误的序列不会横跨该信道传播而导致难以标识错误的源头所在(例如,哪个子链路)。然而,错误报告序列(例如625a、625b)中编码的信息将被保持在测试模式中发送的每个信号中,使得错误检测结果在测试模式中在设备之间传递。此外,当在该信道的子链路内检测到更多错误时,每个错误报告序列(例如625a、625b)中编码的错误检测信息将被更新。例如,重定时器615在接收并分析序列620a以检测错误之后,可将错误报告序列625b的至少部分编码,以标识在重定时器615处对于连接端点605和重定时器615的子链路是否检测到一个或超过一个错误。该信息可以作为在之前接收的错误报告序列625a中描述的其它信息的附加。

继续图6A的示例,重定时器615可发送信号635,该信号635包括已更新的错误报告序列625b和重新产生的序列620b。第二端点610可接收信号635并分析序列620b以检测差异(例如与对于测试模式定义的序列相偏差的一个或超过一个不正确的位),基于任何已标识的差异来标识重定时器615与端点610之间的子链路上的错误或错误状况。第二端点可进一步解码错误报告序列625b,以标识该信号中的子链路中的哪一个(若有)在测试期间产生了错误。在一些情况下,可将错误记录在一个或超过一个寄存器中以供链路测试和管理工具进行稍后处理和分析、等等。

转到图6B的示例,在一些实现中,可充分利用回送状态来实现测试模式。在一些实例中,使用回送测试模式可辅助解决潜在的向后兼容性问题。在许多实例中,信道上的端点和/或重定时器可能是由不同的制造商、供应商等等提供。端点设备中的一个或超过一个可能不具有用于支持测试模式(例如检测测试序列中的错误、更新错误报告序列数据、更新子链路错误寄存器、等等)的逻辑,而仍然支持回送模式,诸如根据由该信道中的设备利用的互连协议(例如,PCIe)所定义的回送模式。除其它示例实现之外,不支持测试模式的特定端点可将上游组件(例如另一端点和重定时器)产生并从该上游组件接收的错误报告序列数据传回,从而允许这些组件中的一个或超过一个观测并处理测试模式的结果,而不论该特定端点是否完全支持测试模式。

在图6B中,如同图6A中的示例,将信号630和635分别从第一端点605发送至重定时器615和从重定时器615发送至第二端点610。可在回送状态下实现测试模式,使得当信号635到达第二端点610时,该信号通过从第二端点610被发送至重定时器615的信号640被回送。该信号640可包括序列620c和错误报告序列625c的重新产生,该错误报告序列625c包括根据信号中的序列620a和620b的分析的错误检测信息。重定时器615可分析序列620c以检测错误。可在信号645中包括的已更新的错误报告序列625d中传达重定时器615从接收到的序列620c中检测出的端点610和重定时器615之间的子链路的错误状态,该信号645进一步包括由重定时器615产生并发送至端点605的另一序列实例620d。

在图6B的示例中,端点605可通过分析在测试模式信号645中接收的序列620d来在测试回送中执行最终错误分析。进一步,端点605可在回送期间解释错误报告序列625d以标识序列620a、620b、620c、620d的分析结果。可从错误报告序列625d中包含的信息来标识端点605和610与重定时器615之间的特定子链路中的错误状况。除其它示例之外,端点605中(可能潜在地或替代地在端点610或重定时器615中)的附加逻辑可向寄存器(例如对应于该信道)或用于链路分析和除错的另一数据结构或逻辑报告子链路错误状态。

转到图6C,在一些实现中,错误报告序列(例如625a-d)可包括一系列错误报告数据集合(或“段”),其中每个错误报告段对应于信道中的子链路中的包括一个或超过一个重定时器(例如615)并连接两个端点605、610的至少一个子链路。例如,在图6B的示例中,报告了三次错误状况(例如,在625b、625c、625d,总结了序列620a、620b、620c的分析结果)。相应地,可在错误报告序列625a-b中的每一个中提供至少三个段。例如,如图6C的示例中所示,可通过将序列620a的分析结果编码在错误报告序列625b中包括的段“Err1”中来反映序列620a的分析结果。可通过端点610在错误报告序列625c中有效地传递(由定时器615提供的)错误报告段Err1的编码以及通过该编码描述的错误状态信息。例如,端点610可利用错误报告序列625b的Err1中包括的相同编码来重新编码错误报告序列625c的Err1。进一步,端点610可标识其分析的(例如接收到的序列620b的)结果将被编码在错误报告序列的多个段中的另一段中(在此示例中是错误报告序列625c中的“Err2”)。类似地,(例如由重定时器615产生的)下一错误报告序列625d可包括错误报告序列625c中包括的Err1和Err2的相同编码,以将所报告的分析结果以及由重定时器615执行的和在该重定时器的相应的错误报告段“Err3”的编码中描述的对序列620c的分析结果传播至端点605。

可按照各种各样的方式格式化和编码错误报告序列或其它错误报告数据,以在测试模式期间渐进地记录信道的子链路的错误状态。如图6C中的示例中所介绍,在一些实现中,可将错误报告数据分段,其中每个分段被指定用于描述该信道的特定子链路的错误状态信息。在一些实现中,可基于错误报告序列要描述的链路的结构来预先配置错误报告序列。例如,如果要对于采用两个重定时器的链路(因此在每个方向上有三个子链路)提供回送测试模式,则可定义至少五个错误报告段。另一方面,对于采用单个重定时器(从而两个子链路)的链路,可定义错误报告序列以包括用于测试该链路的至少三个段,等等。在一些情况下,可定义通用错误报告序列,该通用错误报告序列包括对应于对于测试模式而支持的子链路的最大数量的多个段。除其它示例之外,在另外的示例中,例如,可通过对于多个扩展设备和子链路来分析该链路以动态地确定错误报告序列的分段和结构。

如先前示例中的一些示例中所示,在一些实例中,可将错误报告序列实现为多个段的序列,这些段中的每一个对应于信道中的相应子链路的错误检测。此外,可将不同的段静态地分配给该信道的与该子链路相关联的上游部分和该信道的与同一子链路相关联的下游部分。在其它实例中,可将错误报告序列段动态地映射或分配给子链路错误报告结果。例如,可基于先到原则来分配段,其中第一评估的错误报告结果占据第一段,第二评估的结果占据第二段,以此类推。在一些实现中,可在链路的两个方向上均使用测试模式,使得在一些情况下测试模式序列(例如620)首先在该链路上向上游发送,并在其它情况下在同一链路上首先向下游发送。在此类情况下,除了其它可能的示例之外,第一子链路的错误评估在一些测试中将会首先被报告(例如,并且在Err1段中被报告),而在其它情况下另一子链路的评估替代地被首先报告(例如在Err1段中)。

在一些实现中,可充分利用有序集、训练序列或现有协议(诸如PCIe、PCI、QPI等等)的其它定义的数据序列以用于测试模式。例如,可将横跨每个子链路传达的固定测试模式序列(例如620)定义为包括互连协议的已定义序列。例如,在一些实现中,PCIe电气空闲有序集(EIOS)、电气空闲退出序列有序集(EIEOS)、修改的兼容样式、或其它样式或有序集可作为固定测试模式序列使用或被包括在固定测试模式序列中。在一些实例中,可修改或增强已定义的有序集或其它序列以用于错误报告数据或作为错误报告数据(例如625)。充分利用已定义的现有有序集或其它序列以用于错误报告可辅助实现高互操作性,从而在一些实例中,即便传统设备缺少用于精确地解释既定有序集中包括的特定错误编码的逻辑,也允许传统设备接受并验证信号。例如,在一个实现中,可使用PCIe SKP有序集(SKP OS)或另一有序集。例如,如图6D和6E的示例中所示,可利用有序集的序列(例如OS1-OS6)作为示例错误报告序列(例如625)中的段。每个有序集可提供一个或超过一个字段、码元、字节等等,其中可对错误评估结果进行编码。

在图6D的示例中,示例链路将根端口650连接至特定的端点655并包括两个重定时器660、665。三个子链路675a、675b、675c可将根端口650连接至第一重定时器660、将第一重定时器660连接至第二重定时器665、以及将第二重定时器665连接至端点设备655。在图6D和6E的示例中,寄存器可包括在测试模式中定义有序集(例如OS1-OS6)中的哪些对应于哪些子链路信道的数据。也可预分配将被包括在每个测试模式信号(例如670a-670f)中的固定测试模式序列/样式(例如620),使得当进入测试模式时,该链路上的每个设备(例如650、655、660、665)被配置成评估是否已经在每个子链路信道上成功传输该样式620。如同先前示例,如果接收的样式与预期样式有偏差,则接收/评估设备可利用描述该错误的信息来编码与该子链路相对应的错误报告段(例如OS1-OS6)。例如,除其它示例之外,此类信息可包括在该子链路上接收的样式中检测到的错误的数量、检测到这些错误中的第一错误的块和/或位、检测到该错误的子链路的通道。可通过该链路上的后续设备来转发包含该错误报告的此有序集,以保留由该特定子链路的接收端上的该设备提供的该特定子链路的错误评估结果。

作为示例,在图6D的示例中,与利用系统的回送状态实现的测试模式相关地发送第一信号670a,该第一信号670a包括测试模式样式620和错误报告序列625的多个段。由于在评估任何错误之前发送初始信号670a,所以所发送的将要利用错误结果编码的错误报告序列625的多个段(例如OS1-OS6)的多个部分可以为空(或被编码以指示每个子链路信道的错误报告有待完成)。第一重定时器660可接收信号670a并评估测试模式样式是否与所预期有偏差。在该示例中,在第一子链路675a的下游信道上无错误地发送测试模式样式620。该重定时器660可标识第一有序集OS1将被用于记录第一子链路675a的下游信道的错误,并相应地编码错误报告序列段OS1以指示在第一子链路675a的下游信道上未检测到错误。回送测试模式可利用重定时器660继续,以重新产生测试模式样式并将该测试模式样式以及错误报告序列数据包括在信号670b中,错误报告序列数据将第一子链路675a的评估的编码结果包括在OS1中(例如,示出“无”错误)。

如图6D的示例中所示,在信号670b的情况下,第二重定时器665接收的样式包括错误。所接收的样式的一个或超过一个位偏离了该样式的预期值证实了该错误。此类错误可由子链路上的多种潜在的错误(包括发送设备(例如660)、接收设备(例如665)或子链路自身的通道(例如675b))引起。相应地,在该示例中,第二重定时器665在生成并发送接下来的测试模式信号670c时,可标识,第二子链路675b的下游信道的错误结果将被编码在信号670c中包括的错误报告序列的有序集OS2中。相应地,第二重定时器665可将OS2编码在信号670c中以描述对于第二子链路675b的下游信道检测到的错误。进一步,重定时器665可确保有序集OS1的编码在信号670c的错误报告序列中被重新编码/重复,以包括测试模式信号670b的OS1中接收到的相同编码。然后可在子链路675c的下游信道上将测试模式信号670c发送至端点655,并且端点655可评估信号670c中包括的固定测试模式样式,以标识在子链路675c的下游信道上无错误地接收到该样式。

继续前一示例,可可在子链路675c、675b、675a的上游信道上根据测试模式信号序列的回送来发送后续的测试模式信号(例如670d-670e)。在该示例中,被标识的仅有的其它错误在子链路675c的上游信道上发送的测试模式信号670d的样式中。相应地,后续的测试模式信号(例如670e、670f)可在与第三子链路675c的下游信道相对应的错误报告段(例如OS4)中反映该错误的更早检测。

在接收回送的测试模式序列(在信号670f)之后,根端口或另一组件可标识在错误报告序列段OS1-OS6中记录的错误信息,以逐个子链路地标识哪里出现错误以及出现了何种错误。在一个示例实现中,可维持一个或超过一个控制状态寄存器以用于设备(例如650、655、660、665)、子链路(例如675a-675c)和/或子链路信道、以及(或替代地)作为整体的链路。可使用错误报告序列段OS1-OS6中包括的错误信息,以利用错误信息来填充寄存器。可跟踪这些寄存器中的错误信息以执行对子链路和附连至每个子链路的设备的评估,以标识该链路上的错误状况或其它问题。

在一个示例实现中,可定义一个或超过一个控制状态寄存器。可提供链路能力寄存器,该寄存器包括一个或超过一个位以标识对于子链路信道(或子链路上的设备)是否支持回送测试模式,并且一个或超过一个位可进一步标识哪种级别的错误检测能力在该信道上可用(例如块级、位级、通道级错误检测、等等)。可提供链路控制寄存器,该寄存器包括多个字段,这些字段可被设置以指示何时进入测试模式并且特定设备在测试模式期间如何起作用(例如重新产生特定的固定测试模式序列以及随后的特定数量的错误报告段,等等)。还可提供错误日志寄存器,该寄存器与测试期间产生的错误报告序列数据相关地使用。在一个示例中,错误日志寄存器可包括多个字段,比如:

表1

在一些实现中,可在包括一个或超过一个重定时器(或其它扩展设备)的链路的两个方向上支持回送测试模式(或测试模式)。例如,如图6E的示例中所示,回送测试模式可替代地在端点655处开始,并且可在根端口650处被回送至端点655。例如,端点655可在测试中发送包括测试模式样式620和包括六个有序集段(例如OS1-OS6)的错误报告序列的第一信号680a。在该示例中,错误报告段OS1-OS6可保持如同图6D的示例中的相同的子链路信道分配。例如,重定时器665可通过对分配给子链路675c的上游信道的错误报告段(例如OS4)编码并发送包括经编码的该段的信号680b,来报告在回送中对第一信号680a的样式执行的错误评估。接下来,重定时器660接收信号680b并评估该样式是否包含错误。重定时器660将其测试结果编码在分配给子链路675b的上游信道的错误报告段(例如OS5)中,并将经编码的错误报告段加至测试模式信号680c中包括的错误报告序列。如同图6D的示例中那样,该测试序列使用信号680d-680f继续测试余下的子链路信道(并报告测试的结果)。可通过信号680f将测试的结果最终传递至端点655。进一步,如同图6D的示例中那样,可在接收最终测试模式信号(例如670f、680f)的设备处执行最终子链路测试,虽然该测试的结果可能不会被包含在测试模式信号的任一个中。相应地,在一些实例中,被分配给要测试的最终子链路信道的错误报告段在测试模式序列中可保持空(因为结果是由对最终测试模式信号(例如670f、680f)执行测试的设备(例如650、655)直接获得的)。在一些实例中,除了其它示例使用之外,可将未使用的错误报告段编码以用于错误报告之外的目的,以横跨错误报告段的系列保持DC平衡。

如图6D和6E的示例中可见,在一些实现中,可给要测试的子链路(675a-c)的每个上游和下游信道分配相应的错误报告序列段(例如OS1-OS6),从而(在图6D和6E中所示的情况下)得到包括六个段的错误报告序列。在一些实现中,可给每个子链路分配多个错误报告序列段,从而进一步扩展测试模式信号的长度。例如,可给每个子链路信道分配两个或超过两个错误报告段(例如用于容纳与每个子链路信道的测试相关的更详细的错误状态信息的编码)。

不同于向错误报告序列中的特定有序集静态地分配子链路信道,替代实施例可替代地根据测试的参数提供可在调用测试模式时被分配或使用的段的集合。例如,在一个示例中,可根据测试子链路信道的顺序来使用在测试模式信号中提供的错误报告段。例如,不论在回送测试模式期间首先要测试的是哪个子链路,其测试结果都将被编码在对该首先执行的测试结果指定的段(例如OS1)中。例如,使用诸如图6E的示例中的方法,可将信号680a中的第一测试模式样式的错误评估结果编码在OS1中,可将信号680b的第二错误评估编码在OS2中,以此类推。然而,当回送测试模式从子链路675a的测试开始运行时,如同图6D的示例中那样,序列670a中的样式的测试结果将被编码在OS1中,序列670b中的样式的测试结果将被编码在OS2中,以此类推。在这样的替代实现中,除了其它可能的示例之外,错误报告序列并不提供用于每个子链路信道的专用错误报告段,而可根据要产生的被报告测试结果的数量来提供错误报告段(例如,使用五个段来代替六个段以支持具有两个扩展设备的链路)。

在一个说明性的示例中,可在PCIe兼容的系统中提供测试模式,并且可通过执行对PCIe回送的进入来进入测试模式。在一些实现中,可发送控制信号以使该链路(包括一个或超过一个扩展设备)进入回送,并进一步指示该回送是测试模式回送。在其它实例中,可使用训练序列和/或组帧令牌的一个或超过一个位来协商进入测试模式回送状态。在一些实例中,用于过渡至回送状态的训练序列的一个或超过一个位可包括被编码成指示回送状态是测试模式回送状态的一个或超过一个位,诸如实现本申请中描述的示例测试模式的原理的测试模式回送状态。此外,在一个示例中,测试模式回送信令可从发送EIEOS随后开始数据流(SDS)有序集以指示Loopback.Active(回送.活动)状态而开始。在一个示例中,EIEOS-SDS序列可作为将要对于每个子链路评估的固定测试模式样式。可定义测试模式,以使得数据块中仅允许的样式是data_in=0(例如标准LFSR输出)和将要包括在从子链路发送至子链路的每个测试模式信号中的错误报告序列的段具体化的SKP OS序列。在定义六个连续的SKP OS的系列的实施例中,可正好在370块间隙处发送SKP OS的序列。该链路上的每个设备可感知并相应地预期测试模式信号继续(例外的是一些设备未装备有用于解码在用于测试模式信号中的SKP OS变型中编码的错误报告信息)。多个架构可支持不同的时钟架构,并且它们中的一些要求SKP OS在不同的标称速率下传输。例如,在具有独立时钟扩频(SSC)(SRIS)架构的分别的基准时钟的情况下,可在37个数据块之后调度六个SKP OS。

图7示出示例PCIe SKP有序集700的表示,该有序集被增加以支持以上描述的回送测试模式。例如,码元0到(4*N-1)可对应于标准SKP码元。码元4*N可以是标准SKP_END码元,该码元警示仅还有三个码元被包括在当前SKP OS中。最后三个码元705、710、715可被保留以利用与SKP OS的特定使用情况相对应的信息来编码。在一些情况下,还可测试在SKP码元705、710、715之前的标准SKP码元(以及测试模式样式)以检测错误。在这样的实例中,这些标准SKP码元可被视作测试模式样式的部分。在一些情况下,码元705、710、715的正确格式(例如4*N+1,4*N+2,4*N+3)可以基于该链路的链路训练状态(LTSSM)。在一个示例中,SKP码元705、710、715可被定义成被编码用于在链路状态是回送时报告子链路测试结果。在一个示例中,SKP码元705、710、715中包括的24位数据可实现子链路的错误报告段,并且可被改编以根据以下格式来编码错误报告结果:

表2

应当理解,以上描述的实现被提供作为非限制性的示例,给出这些示例仅仅为了方便示出本申请中描述的特征中的一些。例如,可提供与不同于PCIe的互连协议(例如QPI,IDI,PCI等等)兼容并充分利用该协议中定义的特征中的一些(例如有序集、训练序列、链路状态、等等)的测试模式。此外,虽然在上述示例中常常提到重定时器,但应当理解,本申请中描述的原理和特征中的一些同样适用于采用其它类型的扩展设备的系统。此外,除了其它示例替代方案之外,可在本申请中提到的特定示例以外实现其它测试模式信号、固定测试模式样式、以及错误报告序列,而不背离本说明书中公开的概念的范围。

带内断开检测

重定时器和其它扩展设备可在采用各种各样的不同特征和形状因数的各种各样的不同系统中使用。例如,一些系统可提供在包括一个或超过一个重定时器的链路上的设备的热插拔。在一些实例中,可在缆线内部使用重定时器,并且此类缆线可旨在支持热插拔和其它用途。在一些情况下,可在不提供边带信号和/或提供带外连接/断开信令的其它支持逻辑的一些应用中实现重定时器。此外,重定时器可以是弱装配或未装配的,以处理链路(该重定时器是该链路的部分)上的断开和重连,从而限制了此类重定时器的使用。相应地,不太强健的扩展设备(例如更能忍受意外的断开/重连的扩展设备)通常代替重定时器和可更好地兼容互连协议特征和要求的其它扩展设备,并且原本是更优的扩展解决方案。

在一些实现中,可通过示例重定时器来支持带内断开/重连检测。除了其它示例优势之外,此类解决方案可解决以上介绍的问题中的至少一些。除了其它特征和用途之外,装配有带内断开/重连检测逻辑的重定时器可动态地检测并支持意外断开和重连(诸如在热插拔中)。通过此类逻辑并通过对在重定时器的端口上接收的信号的分析,可便于断开(和/或重连)的检测。相应地,重定时器可从带内数据推断该链路上的断开/重连序列,不需相应的边带信令。实际上,在一些实现中,重定时器可放弃支持此类边带信令,完全依赖于带内断开/重连检测。此外,实现此类带内断开/重连检测逻辑可实现重定时器的各种各样的新使用情况,包括将此类重定时器的使用扩展在诸如PCIe之类的特定互连协议之内。

转到图8的示例,示出了一系列简化的框图800a-d,其中示出了包括至少一个重定时器805的链路上的示例意外断开和重连。在表示800a中,该链路可连接(例如第一端点的)下游端口810/9和(例如第二端点的)第一上游端口815。如果第二端点815的意外断开出现,如表示800b中所示,则该重定时器可能尚未被警告或可能不能立即认识到第二端点815不再连接。尽管重定时器805未连接至该端口上的任何设备,串扰和其它环境信号仍会出现在重定时器的下游端口上。虽然如此,在推断或检测空闲条件存在于重定时器805的下游端口上之前,重定时器805可将这些无意义的信号中的一些转发至另一端点810之上。此外,端点810可类似地检测该链路上的问题(例如基于在另一端点815断开之后由重定时器转发给端点810的垃圾信号)并开始链路训练以修正该问题。如简图800c中所示,可通过已连接的端点610将诸如训练集之类的链路训练数据820、预定义的训练序列(例如包括有序集和其它相似数据)、以及其它数据发送给重定时器805。在一些情况下,可与(例如由端点810发起的)恢复该链路的试图相关地发送链路训练数据820。基于检测下游端口上的空闲状况(例如825)以及重定时器的上游端口上的链路训练数据820,重定时器的带内断开/重连检测逻辑可推断已经发生断开。此外,作为响应,重定时器可触发检测状态830,其中重定时器逻辑试图检测新连接是否已经利用(诸如热插拔设备之类的另一端点的)另一上游端口835完成以及何时已经完成。例如,如图所示在简图800d中,在标识断开之后,重定时器的带内断开/重连检测逻辑可去除其连接(例如50欧姆连接),并尝试恢复新端接(例如50欧姆端接)。

多模重定时器

使用诸如重定时器之类的扩展设备有时候受限于特定类型的应用和系统。例如,许多系统和应用不能忍受通过诸如重定时器之类的组件和相似扩展设备引入的I/O总线等待时间。然而,在一些系统中,为了支持由该系统利用的协议的所有方面,重定时器可被配置成解码和重新编码通过该重定时器发送的信号。例如,一些信号可能要求重定时器修改一些类型的信号中的字段,诸如训练序列、有序集以及其它示例。相应地,传统重定时器解码和重新编码经由该链路上的重定时器发送的所有信号。例如,除其它示例之外,在PCIe中,重定时器可根据8b/10b或128b/130b编码方案来解码并重新编码数据。此类解码和重新编码可以是通过传统重定时器引入的至少一些等待时间的源头。

在一些实现中,可提供解决以上引入的至少一些问题的改进的重定时器,除了其它可能的优势之外,包括最小化重定时器等待时间。例如,可提供包括用于实现多个模式的功能的重定时器,这多个模式包括一个或超过一个低等待时间模式,这些低等待时间模式可被选择性地采用以放弃该链路上的数据的传统解码和重新编码,而是替代地仅转发在子链路上接收的该数据。还可通过在将数据沿链路传递之前编码/重新编码数据的重定时器来提供一个或超过一个附加模式。

图9示出示例流程图900,示出了用于提供多模式重定时器的示例技术和算法。可在重定时器的端口(例如上游端口)上接收信号(905),并且重定时器之内的逻辑可确定适用于所接收信号的信号类型和/或链路状态(905)。可预定义多个条件以用于利用重定时器的多个工作模式中的任一个。这些模式可包括直接转发上游端口上接收的数据以在重定时器的传输端口(例如下游端口)上传输的低等待时间模式。可提供至少一个其它模式,该模式至少部分地解码在上游接收的信号、和/或在重定时器的下游端口上传输该信号之前重新编码或修改所接收信号的编码。在一些实现中,当由重定时器标识链路训练(或链路训练数据)时,可确定(或预先配置)该重定时器采用了更高接触(和更高等待时间)模式,从而允许重定时器修改通过重定时器传输的训练集中的一些字段。可(例如在重定时器的寄存器中)将一些链路状态标识为依赖于重定时器处的解码和/或重新编码,并且标识该链路处于这些状态中的一种状态可触发(例如在915)在重定时器处使用信号编码/解码模式(例如在920)。在另一示例中,当重定时器标识该链路处于诸如以上图5-7的示例中描述的测试模式时,重定时器可采用允许重定时器执行解码(例如错误检测)、字段修改(例如错误报告数据编码)、以及与已定义的测试模式相称的其它任务的模式。可通过重定时器正确地转发其它链路状态和数据类型,不进行解码/重新编码。例如,在活动链路状态(例如L0状态)中发送的数据可被定义为适合仅通过重定时器来转发。相应地,在标识此类链路状态(或数据类型)(例如在910、915)之后,重定时器可采用低等待时间模式(例如在925)以仅通过重定时器传递数据而不通过重定时器对数据进行任何进一步的处理(或至多进行最小程度的处理)。重定时器可响应于它的多个模式中的一个或超过一个模式所对应的检测到的信号类型、链路状态以及其它条件,在它提供的多个模式之间方便地、动态地以及自动地切换。

PHY层速度检测

现代互连结构可支持多种不同的连接速度,并在一些情况下在工作期间支持在两个或超过两个连接速度之间改变。重定时器用于支持链路(该重定时器是该链路的部分)上存在的任何连接速度。传统的重定时器利用有时候包括复杂和不可靠的链路状态检测逻辑的逻辑物理层逻辑来检测或推断链路状态转换,并由此检测或推断所检测到的链路状态内利用的可能的连接速度。由于链路状态检测逻辑处理信息以确定当前链路状态,所以在调节(以及重新调节)重定时器的传输速度直到实现正确的传输速度并且重定时器能够开始以适当的连接速度开始转发接收到的数据之前,会产生显著的延迟。此外,除了其它问题之外,由于链路状态检测逻辑有时会推断出不正确的链路速度,所以链路状态检测逻辑会推断出不正确的连接速度,从而导致链路上出现错误以及进一步的传输延迟。

在一些实现中,可提供包括至少部分利用电气物理层(或PHY)级别的硬件实现的速度检测逻辑的重定时器,以精确地检测链路上的传入数据的实际速度。可利用PHY级别速度检测逻辑来检测实际传输速度,而不是利用逻辑物理层逻辑来“猜测”链路连接速度。实际上,在一些实现中,可简化甚至放弃用于确定链路传输速度的逻辑物理层状态检测逻辑。PHY级别速度检测模块可将检测到的速度传达给逻辑物理层,以允许重定时器迅速并且准确地支持所检测到的速度。

图10是简化的框图100,示出了示例重定时器的示例物理层逻辑。在一些实现中,重定时器可包括物理层,该物理层包括电气PHY子层1005和逻辑物理子层1010。在一些情况下,除其它功能之外,逻辑物理子层1010可进一步包括介质访问控制(MAC)和物理编码(PCS)子层。可在PHY 1005与逻辑物理子层1010之间提供接口1015。除其它示例之外,在诸如PCIe兼容的重定时器实现之类的一些实施例中,可将接口1015实现为用于PCI快速的PHY接口(PIPE)。PHY子层1005可进一步包括速度检测模块1020,该模块可检测链路上的数据的传输速度。PHY子层1005可使用接口1015将检测到的速度传达给逻辑物理子层1010。在一些实现中,接口1015(例如基于PIPE的接口)可被扩展以支持(在速度检测模块1020处检测的)该速度向逻辑物理层1010的传达。在一些实现中,速度检测模块1020可以是模拟速度检测模块。

在一些实现中,每当总线退出电气空闲,速度检测模块1020就可自动执行速度检测。例如,被发送以从空闲恢复链路或传输链路状态的链路训练信号可由速度检测模块1020使用,以检测用于该链路上的数据的传输速度。在一些情况下,互连可支持多个连接速度中的一个。例如,在一个实现中,传入信号可以是2.5、5.0、8.0或16.0GT/s速率中的一个,并且速度检测模块可检测当前在链路上使用所支持的速率中的哪一个速率。在一些实现中,使用这样的速度检测电路(例如1020)可改善重定时器检测并适应该链路的传输速度的准确度和速度。

图11A-11E是示出与使用诸如重定时器之类的扩展设备实现的链路相关的示例技术的流程图1100a-e。例如,在图11A中,在1105标识进入链路的测试模式,该链路由于包括一个或超过一个重定时器(或其它扩展设备)而包括两个或超过两个子链路。在1110产生与测试模式相关的测试模式信号,该测试模式信号包括测试样式和错误报告序列。在1115经由特定的子链路发送测试模式信号。(例如,该信号的接收机)可使用测试模式信号中包括的测试样式来测试特定的子链路以检测错误。错误报告序列用于渐进地报告在测试模式期间已测试的每个子链路的错误状态。可将在前一子链路上标识的错误添加至并标识在1110所产生的测试模式信号中包括的错误报告序列中。

转到图11B,可在1120,在链路上的测试模式期间,经由包括一个或超过一个扩展设备和两个或超过两个子链路的链路中的特定子链路来接收测试模式信号。所接收的测试模式信号可包括测试样式和错误报告序列。对测试样式进行评估以在1130确定该特定子链路的错误状态。在1135产生要在测试模式中发送的另一测试模式信号,该信号包括新产生的测试样式的实例(例如重新产生以确保错误在测试模式信号的系列期间不会横跨该链路传播)以及错误报告序列,该错误报告序列在测试模式期间保持之前测试的子链路的错误状态信息以及(在1130)所确定的特定子链路的错误状态。除其它示例之外,在图11A和11B两个示例中,可使用回送模式来实现测试模式。

在图11C的示例中,在1140使用重定时器在链路上转发数据。重定时器逻辑可在1145检测重定时器的(例如下游或上游的)第一端口的空闲状况。在一些情况下,可推断空闲状况。当检测到空闲状况时,在1150可在重定时器的(例如上游或下游的)第二端口上接收或以其它方式检测到链路训练数据。基于在1145在第一端口上检测到的空闲状况以及第二端口上的链路训练数据(在1150),重定时器可确定之前使用第一端口连接至重定时器的设备已经断开。除其它示例之外,然后重定时器可进入检测状态,以标识何时另一设备代替链路上的已断开设备。

转到图11D的示例,可提供诸如多模重定时器之类的多模扩展设备。可在1160确定包括扩展设备的链路的状况。例如,可基于该链路上接收的数据来确定链路状态或数据类型。可基于该状况在1165选择扩展设备的多个工作模式中的相应工作模式。除其它示例之外,模式可至少包括允许经由扩展设备转发的数据的解码/编码/修改的模式和放弃解码/编码以实现更低等待时间处理的另一模式。在1170,在该状况适用时,应用所选择的工作模式以经由该链路传输数据(例如,除其它示例之外,当标识链路状态转换时再次切换模式)。

在图11E的示例中,在1140在诸如重定时器之类的扩展设备处接收数据,并在1145使用扩展设备的硬件速度检测电路来检测与所接收数据相对应的传输速度。扩展设备可包括逻辑物理子层和电气物理子层,并且速度检测模块可使用电气物理子层来实现。可在1150将检测到的传输速度结果从电气物理子层传达至逻辑物理子层。扩展设备可配置自身以在1155根据检测到的速度来处理和传输数据。

注意,如上所述,上述装置、方法以及系统可被实现在任何电子设备和系统中。作为具体说明,以下附图提供了用于利用在此描述的发明的示例性系统。在用更多细节描述以下系统时,公开、描述以及重访了来自以上讨论的多个不同的互连。并且如显而易见的,上述进步可适用于这些互连、构造、或架构中的任一个。

参考图12,描绘了包括多核处理器的计算系统的框图的实施例。处理器1200包括任何处理器或处理设备,诸如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、芯片上系统(SOC)或用于执行代码的其他设备。在一个实施例中,处理器1200包括至少两个核——核1201和1202,这两个核可包括不对称核或对称核(所示实施例)。然而,处理器1200可包括可以是对称的或非对称的任何数量的处理元件。

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

核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用的执行资源相关联。与核相反,硬件线程通常指的是位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如所看到的那样,当某些资源是共享的而其他资源是专用于架构状态的时候,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常被操作系统视为单个的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。

如图12所示的物理处理器1200包括两个核——核1201和1202。在此,核1201和1202被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一实施例中,核1201包括无序处理器核,而核1202包括有序处理器核。然而,可从任何类型的核中分别选择核1201和1202,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指令集架构(ISA)的核、共同设计的核或其它已知核。在异构核环境(即,非对称核)中,一些形式的转换(如二进制转换)可被用来在一个或这两个核上调度或执行代码。不过,为进一步讨论,以下将进一步详细描述在核1201中示出的功能单元,因为核1202中的单元以在所示实施例中的类似方式操作。

如所描绘的那样,核1201包括两个硬件线程1201a和1201b,它们也可被称为硬件线程槽1201a和1201b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器1200视为四个单独的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上文所暗指的那样,第一线程与架构状态寄存器1201a相关联,第二线程与架构状态寄存器1201b相关联,第三线程可与架构状态寄存器1202a相关联,并且第四线程可与架构状态寄存器1202b相关联。在此,如上所述,可将架构状态寄存器(1201a、1201b、1202a和1202b)中的每一个称为处理元件、线程槽或线程单元。如所示出的那样,架构状态寄存器1201a被复制在架构状态寄存器1201b中,因此能够为逻辑处理器1201a和逻辑处理器1201b存储单独的架构状态/上下文。在核1201中,也可复制用于线程1201a和1201b的其他较小资源,诸如,指令指针以及分配器和重命名块1230中的重命名逻辑。可通过分区来共享诸如重排序器/引退单元1235中的重排序缓冲器、ILTB 1220、加载/存储缓冲器和队列之类的一些资源。可潜在地完全共享诸如通用内部寄存器、页表基寄存器、低层级数据高速缓存和数据TLB 1215、执行单元1240和无序单元1235的多个部分之类的其他资源。

处理器1200通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由处理元件专用/专用于处理元件。在图12中,示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任何单元,并包括未描绘出的任何其他已知的功能单元、逻辑或固件。如所示出的那样,核1201包括简化的、代表性的无序(OOO)处理器核。但是,在不同实施例中,可利用有序处理器。OOO核包括用于预测要被执行/进行的分支的分支目标缓冲器1220以及用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)1220。

核1201进一步包括耦合至取出单元1220的解码模块1225,用于解码取出的元素。在一个实施例中,取出逻辑包括分别与线程槽1201a、1201b相关联的单个的序列发生器。通常,核1201与第一ISA相关联,该第一ISA定义/指定在处理器1200上可执行的指令。作为第一ISA的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码逻辑1225包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行第一ISA所定义的处理的电路。例如,如下文更详细讨论地,在一个实施例中,解码器1225包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器1225识别的结果,架构或核1201采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。注意,在一个实施例中,解码器1226识别相同的ISA(或其子集)。或者,在异构核环境中,解码器1226识别第二ISA(第一ISA的子集或不同的ISA)。

在一个示例中,分配器和重命名器块1230包括用于预留资源的分配器,诸如,用于存储指令处理结果的寄存器组。然而,线程1201a和1201b潜在地能够进行无序执行,其中,分配器和重命名器块1230还保留其他资源(诸如,用于跟踪指令结果的重排序缓冲器)。单元1230还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器1200内部的其他寄存器。重排序/引退单元1235包括用于支持被无序执行的指令的无序执行和稍后的有序引退的、诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件。

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

较低层级的数据高速缓存和数据转换缓冲器(D-TLB)1250耦合至执行单元1240。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。

在此,核1201和1202共享对较高级或进一步的高速缓存的访问,如与片上接口1210相关联的第二级高速缓存。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行单元。在一个实施例中,较高级高速缓存是末级数据高速缓存——处理器1200上的存储器层次中的最后级高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器1225之后,用于存储最近经解码的跟踪。在此,指令可能引用宏指令(即,解码器所识别的通用指令),该宏指令可解码成多个微指令(微操作)。

在所描绘的配置中,处理器1200还包括片上接口模块1210。历史上,存储器控制器(以下将更详细地描述)已被包括在处理器1200外部的计算系统中。在该场景中,片上接口1210与处理器1200外部的器件通信,处理器1200外部的器件诸如系统存储器1275、芯片组(通常包括存储器控制器中枢以连接到存储器1275以及I/O控制器中枢以连接到外围器件)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线1205可包括任何已知的互连,诸如,多分支总线、点对点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线以及GTL总线。

存储器1275可专用于处理器1200或可由处理器1200与系统中的其他设备共享。存储器1275的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其他已知的存储设备。注意,设备1280可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储设备,无线收发机,闪存设备,音频控制器,网络控制器或其他已知设备。

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

在一个实施例中,处理器1200能够执行编译器、优化和/或转换器代码1277以编译、转换和/或优化应用代码1276,以支持本申请中描述的装置和方法或与本申请中描述的装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集合。通常,利用编译器对程序/应用代码的编译是在多个级和多次运行中完成的,以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。

更大的编译器通常包括多个级,但多数时候这些级被包括在两个一般级中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它操作的引用可在编译器的上述级或运行中的任一个以及任何其它已知的级或运行中进行。作为说明性示例,编译器可能在编译的一个或超过一个级中插入操作、调用、函数等等,诸如在编译的前端级插入调用/操作,然后在转换级期间将这些调用/操作转换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用,并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代码或其组合。

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

现在参考图13,示出了多核处理器的实施例的框图。如图13的实施例中所示,处理器1300包括多个域。具体而言,核域1330包括多个核1330A-1330N,图形域1360包括具有媒体引擎1365的一个或超过一个图形引擎,以及系统代理与1310。

在各个实施例中,系统代理域1310处理功率控制事件和功率管理,使得域1330和1360的各个单元(例如核和/或图形引擎)是独立可控的,以根据给定单元中发生的活动(或不活动)在适当的功率模式/水平下操作(例如活动、加速、睡眠、休眠、深度睡眠或其它高级配置电源接口类似的状态)。域1330和1360中的每一个可在不同的电压和/或功率下操作,并且域中的各个单元各自可能在独立的频率和电压下操作。注意,虽然仅以三个域示出,但是会理解,本发明的范围不限于这方面,并且附加的域可存在于其他实施例中。

如所示,每个核1330除各种执行单元和附加的处理元件之外,还包括多个低级高速缓存。在此,各个核彼此耦合并且耦合至由末级高速缓存(LLC)的多个单元或片1340A-1340N形成的共享的高速缓存存储器;这些LLC通常包括存储和高速缓存控制器功能,并在核之间以及可能的图形引擎之间被共享。

如所见,环状互连1350将核耦合在一起,并通过各自位于核与LLC片之间的耦合处的多个环分支1352A-1352N来提供核域1330、图形域1360以及系统代理电路1310之间的互连。如图13中可见,互连1350用于携带各种信息,包括地址信息、数据信息、确认信息、以及监听/无效信息。虽然示出了环状互连,但可利用任何已知的管芯上的互连或结构。作为说明性示例,可按照相似的方式来利用以上讨论的结构中的一些(例如另一管芯上互连、芯片上系统结构(OSF)、高级微控制器总线架构(AMBA)互连、多维网状网结构、或其它已知的互连架构)。

如进一步所看到的那样,系统代理域1310可包括显示引擎1312,该显示引擎可提供对相关联的显示器的控制以及到它的接口。系统代理域1310可包括其它单元,诸如:集成存储器控制器1320,提供到系统存储器(例如利用多个DIMM实现的DRAM)的接口;一致性逻辑1322,用于执行存储器一致性操作。可以存在多个接口以实现处理器与其他电路之间的互连。例如,在一个实施例中,提供至少一个直接媒体接口(DMI)1316接口以及一个或超过一个PCIeTM接口1314。显示引擎和这些接口典型地通过PCIeTM桥1318耦合至存储器。再进一步,为了提供诸如附加的处理器或其它电路之类的其它代理之间的通信,可提供一个或超过一个其它接口。

现在参考图14,示出了代表性核的框图;具体而言是诸如来自图13的核1330之类的核的后端的逻辑块。一般而言,图14中所示的结构包括无序处理器,该无序处理器具有前端单元1470,该前端单元用于取出传入指令、执行各种处理(例如高速缓存、解码、分支预测等等)并向无序(OOO)引擎1480传递指令/操作。OOO引擎1480对经解码的指令执行进一步处理。

具体地,在图14的实施例中,无序引擎1480包括分配单元1482,该分配单元用于接收来自前端单元1470的经解码的指令(可以是一个或超过一个微指令或微操作的形式),并将它们分配给诸如寄存器等等之类的适当的资源。接下来,将指令提供给预留站1484,该预留站预留并调度资源以在多个执行单元1486A-1486N中的一个执行单元上执行。可存在各样各样类型的执行单元,包括例如算术逻辑单元(ALU)、加载和存储单元、向量处理单元(VPU)、浮点执行单元、等等。将来自这些不同执行单元的结果提供给重排序缓冲器(ROB)1488,该重排序缓冲器获取未排序的结果并将它们返回至正确的程序顺序。

仍参考图14,注意前端单元1470和无序引擎1480耦合至存储器分层结构的不同层级。具体而言,所示指令级高速缓存1472耦合至中级高速缓存1476,该中级高速缓存又耦合至末级高速缓存1495。在一个实施例中,末级高速缓存1495在芯片上单元(有时称为非核)1490中实现。作为示例,单元1490与图13的系统代理1310相似。如上所讨论,非核1490与系统存储器1499通信,在所示实施例中,系统存储器1499通过ED RAM实现。注意,无序引擎1480之内的各个执行单元1486与一级高速缓存1474通信,一级高速缓存也与中级高速缓存1476通信。注意,附加的核1430N-2-1430N可耦合至LLC 1495。尽管在图14的实施例以这样的高级别示出,然而要理解可能存在各种变型和附加组件。

转到图15,形成具有处理器的示例性计算机系统的框图,处理器包括用于执行指令的执行单元,其中示出了实现根据本发明的一个实施例的一个或超过一个特征的一个或超过一个互连。根据本发明,诸如根据在此所描述的实施例,系统1500包括诸如处理器1502之类的组件,该处理器用于使用包括逻辑的执行单元以执行算法来处理数据。系统1500代表基于PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1500执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的某个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。

实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)、手持式PC。嵌入式应用可包括:微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行参照至少一个实施例的一个或超过一个指令的任何其他系统。

在该示出的实施例中,处理器1502包括用于实现算法的一个或超过一个执行单元1508,该算法用于执行至少一条指令。可在单处理器桌面或服务器系统的上下文中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统1500是“中枢”系统架构的示例。计算机系统1500包括用于处理数据信号的处理器1502。作为一个说明性示例,处理器1502包括例如,复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备(诸如,数字信号处理器)。处理器1502耦合到处理器总线1510,该处理器总线110在处理器1502与系统1500中的其他组件之间传输数据信号。系统1500的元件(例如,图形加速器1512、存储器控制器中枢1516、存储器1520、I/O控制器中枢1524、无线收发机1526、闪存BIOS 1528、网络控制器1534、音频控制器1536、串行扩展端口1538、I/O控制器1540等)执行为熟悉本领域的人员所共知的它们的常规功能。

在一个实施例中,处理器1502包括第一级(L1)内部高速缓存存储器1504。取决于架构,处理器1502可以具有单个的内部高速缓存或多个层级的内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。寄存器组1506用于将不同类型的数据存储在各种寄存器中,各种寄存器包括整数寄存器、浮点寄存器、向量寄存器、区块化(banked)寄存器、影子寄存器(shadow register)、检查点寄存器、状态寄存器以及指令指针寄存器。

执行单元1508(包括执行整数和浮点操作的逻辑)也位于处理器1502中。在一个实施例中,处理器1502包括用于存储微代码的微代码(ucode)ROM,该微代码在被执行时将执行用于某些宏指令的算法或处理复杂的场景。在此,微代码是潜在地可更新的,以便为处理器1502处理逻辑缺陷/修补。对于一个实施例,执行单元1508包括用于处理紧缩指令集1509的逻辑。通过将紧缩指令集109包括在通用处理器1502以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器1502中的紧缩数据来执行由许多多媒体应用程序使用的操作。如此,通过将处理器的数据总线的全宽度用于对紧缩数据执行操作,加速了许多多媒体应用并且更高效地执行了紧缩数据。这潜在地消除了跨处理器的数据总线来传输较小的数据单元以执行一个或超过一个操作(一次对一个数据元素执行)的需求。

执行单元1508的替换实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。系统1500包括存储器1520。存储器1520包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。主存储器1520存储将由可由处理器1502执行的数据信号来表示的指令和/或数据。

值得注意的是,可在图15所示的一个或超过一个互连上利用本发明的任意上述特征或方面。例如,未示出的用于耦合处理器1502的内部单元的管芯上互连(ODI)实现上述本发明的一个或超过一个方面。或者,本发明与处理器总线1510(例如其它已知的高性能计算互联)、到存储器1520的高带宽存储器路径1518、到图形加速器1512的点到点链路(例如,快速外围组件互连(PCIe)兼容的结构)、控制器中枢互连1522、用于耦合其他所示部件的I/O或其它互连(例如,USB、PCI、PCIe)相关联。此类组件的一些示例是音频控制器1536、固件中枢(闪存BIOS)1528、无线收发机1526、数据存储设备1524、包括用户输入和键盘接口1542的传统I/O控制器1510、串行扩展端口1538(诸如,通用串行总线(USB))以及网络控制器1534。数据存储设备1524可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。

现在参照图16,所示出的是根据本发明实施例的第二系统1600的框图。如图16所示,多处理器系统1600是点对点互连系统,且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680中的每一个都可以是处理器的某一版本。在一个实施例中,1652和1654是串行、点对点一致性互连结构(诸如高性能架构)的一部分。因此,可在QPI架构中实现本发明。

虽然仅以两个处理器1670、1680来示出,但应理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或超过一个附加处理器。

处理器1670和1680被示为分别包括集成存储器控制器单元1672和1682。处理器1670还包括点对点(P-P)接口1676和1678作为其总线控制器单元的部分;类似地,第二处理器1680包括P-P接口1686和1688。处理器1670、1680可以经由使用点对点(P-P)接口电路1678、1688的P-P接口1650来交换信息。如图16所示,IMC 1672和1682将处理器耦合到各自的存储器,即存储器1632和存储器1634,这些存储器可以是本地附连到各自处理器的主存储器的多个部分。

处理器1670、1680可各自使用点对点接口电路1676、1694、1686、1698经由各个P-P接口1652、1654与芯片组1690交换信息。芯片组还1690经由接口电路1692沿着高性能图形互连1639与高性能图形电路1638交换信息。

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

芯片组1690可经由接口1696耦合至第一总线1616。在一个实施例中,第一总线1616可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。

如图16所示,各种I/O设备1614可连同总线桥1618一起耦合到第一总线1616,总线桥1618将第一总线1616耦合到第二总线1620。在一个实施例中,第二总线1620可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1620,在一个实施例中,这些设备包括例如键盘和/或鼠标1622、通信设备1627以及存储单元1628,存储单元1628诸如可包括指令/代码和数据1630的盘驱动器或其他大容量存储设备。此外,音频I/O 1624可耦合至第二总线1620。值得注意的是,其他架构也是可能的,其中所包括的部件和互连架构不同。例如,代替图16的点对点架构,系统可以实现多分支总线或其他此类架构。

接下来参考图17,描绘了根据本发明的各实施例的芯片上系统(SOC)设计的实施例。作为特定的说明性示例,SOC 1700被包括在用户装备(UE)中。在一个实施例中,UE是指由最终用户用于通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。

在此,SOC 1700包括2个核——1706和1707。核1706和1707可符合指令集架构,诸如,基于英特尔架构核TM的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1706和1707耦合到与总线接口单元1709和L2高速缓存1711相关联的高速缓存控制装置1708,以便与系统1700的其他部分进行通信。互连1710包括可能实现所描述的公开的一个或超过一个方面的诸如IOSF、AMBA或上文讨论的其他互连之类的芯片上互连。

接口1710可以提供到其他组件的通信信道,其他组件诸如,与订户标识模块(SIM)卡对接的SIM 1730、用于保存供核1706和1707执行以初始化并引导SOC 1700的引导代码的引导ROM 1735、用于与外部存储器(例如,DRAM 1760)对接的SDRAM控制器1740、用于与非易失性存储器(例如,闪存1765)对接的闪存控制器1745、用于与外围设备对接的外围控制装置1750(例如,串行外围接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1720和视频接口1725、用于执行图形相关的计算的GPU 1715等。这些接口中的任一个可纳入本申请中描述的本发明的多个方面。

另外,系统可以包括用于通信的外围设备,诸如,蓝牙模块1770、3G调制解调器1775、GPS 1785以及Wi-Fi 1785。注意,如上所述,UE包括用于通信的无线电装置。结果,这些外围通信模块不都是需要的。然而,在UE中,将包括用于外部通信的某种形式的无线电装置。

虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神和范围的所有此类修改和变型。

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

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

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

此外,在一个实施例中,使用术语‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于指的是装置、逻辑、硬件、和/或元件的潜在状态,潜在该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。

如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。

而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。

上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM(SRAM)或动态RAM(DRAM)之类的随机存取存储器(RAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质相区别。

被用于对逻辑进行编程以执行本发明的诸个实施例的指令可被存储在系统的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。

以下示例涉及根据本说明书的各实施例。一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法以用于:产生测试模式信号,该测试模式信号包括测试样式和错误报告序列;以及在链路上发送该测试模式信号,该链路包括一个或超过一个扩展设备和两个或超过两个子链路,其中测试模式信号在子链路中的特定子链路上被发送,该测试样式由接收设备使用以标识特定子链路上的错误,并且错误报告序列通过错误信息被编码以描述多个子链路中的子链路的错误状态。

在至少一个示例中,所述测试模式信号在回送测试模式之内被发送,并且所述测试模式信号的实例将经由所述一个或超过一个扩展设备从所述链路上的第一设备被发送至第二设备,并且还经由所述一个或超过一个扩展设备从所述第二设备被发送回所述第一设备。

在至少一个示例中,接收来自该链路的子链路中的另一子链路上的另一设备的测试模式信号的实例中的至少一个实例,其中测试模式信号的每个实例包括测试样式的实例和错误报告序列的实例。

在至少一个示例中,提供错误检测逻辑以基于测试样式的实例来确定另一子链路上的一个或超过一个错误。

在至少一个示例中,基于经由子链路接收的测试模式信号中包括的测试样式的实例偏离测试样式的预期值的标识,确定子链路的错误。

在至少一个示例中,扩展设备包括重定时器。

在至少一个示例中,该装置包括重定时器。

在至少一个示例中,错误报告序列包括多个段,并且每个段描述子链路中的相应子链路的错误状态。

在至少一个示例中,每个段描述相应的子链路的下游信道和上游信道中的一个。

在至少一个示例中,每个段包括一个或超过一个有序集,并且每个有序集的至少部分被设置成经编码以标识子链路中的至少一个子链路的错误状态。

在至少一个示例中,每个有序集包括相应的SKP有序集。

在至少一个示例中,一个或超过一个扩展设备包括至少两个扩展设备,两个或超过两个子链路包括三个子链路,并且多个段包括至少五个段。

在至少一个示例中,对前一子链路检测到的错误信息被编码在错误报告序列中,并且在错误报告序列中保持之前检测到的两个或超过两个子链路中的其它子链路的错误状态的错误信息。

在至少一个示例中,错误信息包括以下的一个或超过一个:对于子链路检测到的错误的数量、链路上出现错误的通道、以及在接收到的测试样式中检测到的错误的位置。

在至少一个示例中,所述测试样式包括将在测试期间在每个子链路处再生的预定义样式。

在至少一个示例中,测试样式包括一个或超过一个有序集。

在至少一个示例中,一个或超过一个有序集是电气空闲退出序列有序集(EIEOS)。

在至少一个示例中,控制逻辑用于标识所述链路处于测试模式,并且所述测试模式信号根据所述测试模式而被发送。

在至少一个示例中,测试样式是对于测试模式定义的固定测试样式。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、方法以用于:在测试模式中在链路上接收测试模式信号,其中该链路包括至少一个扩展设备和两个或超过两个子链路,该测试模式信号包括测试样式和错误报告序列,该测试模式信号在子链路中的特定子链路上被发送,并且错误报告序列通过错误信息被编码以描述多个子链路中的子链路的错误状态,并评估测试模式信号中的测试样式以标识特定子链路的错误状态。

在至少一个示例中,所述测试样式被评估以确定所述测试样式是否偏离预期的测试样式。

在至少一个示例中,所述测试样式针对测试模式而定义,所述测试模式包括所述链路的每个子链路的测试,并且所述测试样式的相应实例将被产生并在所述子链路的每次测试中被发送,以确定在相应子链路的末端接收的测试样式的相应实例是否偏离所定义的测试样式。

在至少一个示例中,每个子链路包括相应的上游信道和下游信道,并且测试样式的实例将在每个子链路的上游和下游信道中的每一个上被发送。

在至少一个示例中,错误状态标识基于测试样式在特定子链路上检测到的一个或超过一个错误。

在至少一个示例中,错误状态标识在特定子链路上检测到的错误的数量。

在至少一个示例中,错误状态标识链路的一个或超过一个错误出现的通道。

在至少一个示例中,错误状态标识在测试样式内检测到一个或超过一个错误的位置。

在至少一个示例中,所述控制逻辑用于产生所述测试模式信号的另一实例,其中所述测试模式信号的另一实例包括错误报告序列,所述错误报告序列被编码以标识所述特定子链路的错误状态,所述装置进一步包括发射机逻辑以在所述子链路中的另一子链路上发送所述测试模式信号的另一实例。

在至少一个示例中,所述测试模式信号的所述另一实例中的所述错误报告序列保持先前确定的所述链路的其它子链路的错误状态的错误状态信息。

在至少一个示例中,错误报告序列包括多个段,并且每个段描述子链路中的相应子链路的错误状态。

在至少一个示例中,所述控制逻辑用于标识所述多个段中的特定段,其中在所述特定段中编码所述特定子链路的错误状态。

在至少一个示例中,特定段被标识为预分配给特定子链路。

在至少一个示例中,特定段被标识为多个段中的下一未编码段。

在至少一个示例中,测试模式信号的另一实例包括测试样式的实例。

在至少一个示例中,所接收的测试模式信号中包括的测试样式包括一个或超过一个错误,并且测试模式信号的另一实例中包括的测试样式的实例在没有一个或超过一个错误的情况下被发送。

在至少一个示例中,扩展设备的多个工作模式中的第一模式用于处理测试信号,多个工作模式包括另一低等待时间模式,且第一模式用于实现对测试信号的解码。

在至少一个示例中,扩展设备包括重定时器。

在至少一个示例中,错误报告序列描述了该链路的两个或超过两个子链路中的每一个的错误状态,并且该装置还包括逻辑以用于解释错误报告序列并将该链路的错误结果记录在至少一个数据结构中。

在至少一个示例中,该数据结构包括与该链路相对应的一个或超过一个寄存器。

在至少一个示例中,扩展设备包括至少两个重定时器。

在至少一个示例中,根端口设备连接至该链路。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑以及方法,以用于:在扩展设备的第一端口上接收来自端点设备的链路训练数据;标识扩展设备的第二端口上的空闲链路状况,其中扩展设备被包括在链路上;以及基于空闲链路状况和链路训练数据来确定另一设备已经断开,其中另一设备之前连接至该链路。

在至少一个示例中,该链路将端点设备连接至其它设备,并且扩展设备被定位在该端点与链路上的其它设备之间。

在至少一个示例中,第一端口经由该链路的第一子链路连接至端点设备,第二端口连接至该链路的第二子链路,并且另一设备之前通过第二子链路连接至第二端口。

在至少一个示例中,扩展设备包括重定时器。

在至少一个示例中,重定时器缺少用于确定链路上的断开的边带逻辑。

在至少一个示例中,另一设备的断开包括意外断开。

在至少一个示例中,断开对应于在该链路上热插拔设备。

在至少一个示例中,基于确定另一设备已经断开,进入检测模式。

在至少一个示例中,在检测模式中,第二端口的连接器被去除以在第二子链路上扫描并建立(例如到第三设备的)新连接。

在至少一个示例中,链路训练数据包括一个或超过一个训练序列。

在至少一个示例中,链路训练数据对应于恢复该链路的尝试。

在至少一个示例中,基于在第二端口上检测到的活动水平来推断空闲链路状况。

在至少一个示例中,在检测到空闲链路状况的同时,接收链路训练数据。

在至少一个示例中,第一端口包括上游端口,第二端口包括下游端口。

在至少一个示例中,该链路包括连接缆线。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或基于软件的逻辑、以及方法,以用于:提供重定时器以支持至少两个工作模式并基于链路上的状况来选择性地采用这些模式,其中操作模式至少包括低等待时间模式和特定模式,在低等待时间模式中按接收的原样来转发数据,并在特定模式中解码和重新编码数据。

在至少一个示例中,不解码重定时器在低等待时间模式下接收的数据并按照接收的原样来转发。

在至少一个示例中,特定模式允许修改由重定时器在该链路上接收的数据。

在至少一个示例中,这些状况包括在该链路上传输的数据的类型和该链路的链路状态中的至少一个。

在至少一个示例中,重定时器用于检测这些状况中的特定状况,并基于检测到的特定状况采用工作模式中的一个工作模式。

在至少一个示例中,当检测到链路处于活动链路状态时,采用低等待时间模式。

在至少一个示例中,活动链路状态包括L0状态。

在至少一个示例中,特定模式用于训练序列和有序集数据。

在至少一个示例中,特定模式用于链路训练链路状态。

在至少一个示例中,特定模式用于测试模式。

在至少一个示例中,测试模式用于确定该链路的多个子链路中的每个子链路的错误状态。

在至少一个示例中,该链路使用基于PCIe的协议。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:提供包括物理层逻辑的扩展设备,其中该物理逻辑包括逻辑物理子层和电气物理子层,扩展设备被包括在链路上,电气物理子层包括速度检测模块以检测数据在链路上的传输速度,并且电气物理子层用于将检测到的该链路的传输速度传达至逻辑物理子层。

在至少一个示例中,扩展设备包括重定时器设备。

在至少一个示例中,传输速度被检测为该链路的速度的预定义集合中的一个。

在至少一个示例中,速度的集合包括2.5GT/s速度、5GT/s速度、以及8GT/s速度。

在至少一个示例中,速度检测模块包括模拟速度检测模块。

在至少一个示例中,速度检测模块至少部分地在硬件中实现。

在至少一个示例中,该链路包括PCIe兼容的链路。

一个或超过一个实施例可提供装置、系统、机器可读存储体、机器可读介质、基于硬件和/或软件的逻辑、以及方法,以用于:在链路上在扩展设备处接收数据,该链路将第一端点连接至第二端点,并且扩展设备被放置在该链路上的第一与第二端点之间;使用在扩展设备的硬件中实现的速度检测电路来检测数据的传输速度;将检测到的传输速度传达给扩展设备的物理层逻辑;以及使用扩展设备经由该链路以传输速度来将数据从第一设备传达到第二设备。

在至少一个示例中,使用扩展设备的电气物理子层和逻辑物理子层之间的物理层接口来将检测到的传输速度传达给物理层逻辑。

在至少一个示例中,物理层接口包括用于PCI快速(PIPE)接口的PHY接口。

在至少一个示例中,检测传输速度包括检测传输速度是该链路所支持的预定义速度的集合中的一个。

在至少一个示例中,在该链路上标识空闲状况,并且在空闲状况之后检测传输速度。

在至少一个示例中,该数据包括链路训练数据,并且根据链路训练数据来检测传输速度。

本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。如此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或超过一个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。

在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。相应地,应当将说明书和附图应认为是说明性的而不是限制性的。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。

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