流标识符线路保护的制作方法

文档序号:14216233阅读:198来源:国知局

本公开涉及计算系统,并且具体地(但不唯一地)涉及点到点互连。



背景技术:

半导体处理和逻辑设计方面的进步已经允许在集成电路设备上可以存在逻辑量的增加。作为推论,计算机系统配置已经从系统中的单个或多个集成电路演进到单独的集成电路上存在的多个核心、多个硬件线程和多个逻辑处理器,以及集成在这些处理器内的其他接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可以包括任何数量的核心、硬件线程、逻辑处理器、接口、存储器、控制器中心等。

由于更强的在更小的封装中适应更多处理能力的能力,较小的计算设备越来越受欢迎。智能电话、平板计算机、超薄笔记本计算机以及其他用户设备以指数方式增长。然而,这些较小的设备对于超过了形状因子的数据存储和复杂处理两者依赖于服务器。因此,高性能计算市场(即,服务器空间)的需求也增加。例如,在现代服务器中,典型地不仅存在具有多个核心的单个处理器,而且还存在多个物理处理器(也称为多个套接口),以增加计算能力。但是随着处理能力连同计算系统中的设备的数量一起增长,套接口与其他设备之间的通信变得更为关键。

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

附图说明

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

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

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

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

图5示出了多芯片封装的实施例。

图6是多芯片封装链路(mcpl)的简化框图。

图7是示例mcpl上的示例信号传递的表示。

图8是mcpl的简化框图。

图9是示例链路状态机的一部分的表示。

图10是示例链路状态机的表示。

图11是进入低功率状态的信号传递的表示。

图12是示出mcpl的示例实现的框图。

图13是在示例mcpl的流线路上发送的流标识符码的示例图示。

图14a-14b是示出用于处理mcpl上的位错误的技术的简化流程图。

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

在各种附图中,相似的附图标记和称号指示相似的元素。

具体实施方式

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

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

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

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

参考图1,示出了由将一组部件进行互连的点到点链路组成的结构的实施例。系统100包括耦合到控制器中心115的处理器105和系统存储器110。处理器105包括任何处理元件,例如,微处理器、主机处理器、嵌入式处理器、协处理器、或其他处理器。处理器105通过前端总线(fsb)106耦合到控制器中心115。在一个实施例中,fsb106是如下面描述的串行点到点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。系统100的一个或多个部件可以设置有用于实现这里描述的特征的逻辑。

系统存储器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、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(usb)设备、扫描仪以及其他输入/输出设备。经常在pcie本地(例如,设备)被称为端点。虽然没有具体示出,但是设备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中。

转到图2,示出了分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,例如,快速路径互连(qpi)栈、pcie栈、下一代高性能计算互连栈、或其他分层栈。虽然立即在下面参考图1-4相对于pcie栈进行讨论,但相同的概念可以应用于其他互连栈。在一个实施例中,协议栈200是包括事务层205、链路层210以及物理层220的pcie协议栈。接口(例如,图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。在所示的示例中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局事务标识符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传输码,其中发送/接收10位符号。这里,使用特殊符号来以帧223对分组进行调帧。另外,在一个示例中,接收器还提供从传入的串行流中恢复的符号时钟。

如上所述,虽然参考pcie协议栈的具体实施例讨论了事务层205、链路层210以及物理层220,但是分层协议栈并不限于此。实际上,任何分层协议都可以被包含/实现。作为示例,表示为分层协议的端口/接口包括:(1)用于对分组进行组包的第一层,即事务层;用于对分组进行序列化的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体示例,使用公共标准接口(csi)分层协议。

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

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

差分对是指两条发送路径,例如,线416和417,以发送差分信号。作为示例,当线416从低电压电平触变到高电压电平(即,上升沿)时,线417从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地表示更好的电特性,例如,更好的信号完整性,即交叉耦合、电压过冲/下冲、振荡等。这允许更好的时间窗口,其支持更快的传输频率。

图5是示出示例多芯片封装505的简化框图500,该示例多芯片封装505包括使用示例多芯片封装链路(mcpl)520可通信地连接的两个或更多个芯片或管芯(例如,510、515)。虽然图5示出了使用示例mcpl520互连的两个(或更多个)管芯的示例,但是应该理解,本文关于mcpl的实现描述的原理和特征可以应用于连接管芯(例如,510)和其他部件的任何互连或链路,包括连接两个或更多个管芯(例如,510、515),将管芯(或芯片)连接到另一管芯外部件,将管芯连接到另一设备或封装外管芯(例如,505),将管芯连接到bga封装,在插入器上实现贴片(point),以及潜在地其他示例。

通常,多芯片封装(例如,505)可以是电子封装,其中多个集成电路(ic)、半导体管芯、或其他分立部件(例如,510、515)被封装到统一的衬底(例如,硅或其他半导体衬底)上,从而促进经组合的部件用作单个部件(例如,如同更大的ic)。在一些实例中,较大的部件(例如,管芯510、515)本身可以是ic系统,例如,片上系统(soc)、多处理器芯片、或包括设备上(例如,单个管芯(例如,510、515)上)的多个部件(例如,525-530和540-545)的其他部件。多芯片封装505可以提供潜在地从多个分立部件和系统构建复杂且多样的系统的灵活性。例如,管芯510、515中的每一个可以由两个不同的实体制造或以其他方式提供,其中由另一第三实体提供封装505的硅衬底,以及许多其他示例。此外,多芯片封装505内的管芯和其他部件本身可以包括互连或其他通信结构(例如,535、550),其提供用于在设备(例如,分别为510、515)内的部件(例如,525-530和540-545)之间进行通信的基础设施。各种部件和互连(例如,535、550)可以潜在地支持或使用多个不同的协议。此外,管芯(例如,510、515)之间的通信可以潜在地包括通过多个不同协议的管芯上的各种部件之间的事务。设计用于在多芯片封装上的芯片(或管芯)之间提供通信的机制可能是挑战性的,其中传统的解决方案基于寻求进行互连的部件(和期望的事务)的特定组合来采用高度专用的、昂贵的且封装特定的解决方案。

本说明书中描述的示例、系统、算法、装置、逻辑以及特征可以解决上面识别问题中的至少一些,潜在地包括在此未明确提及的许多其他问题。例如,在一些实现方式中,可以提供高带宽、低功率、低时延接口,以将主机设备(例如,cpu)或其他设备连接到与主机位于同一封装中的配套芯片。这种多芯片封装链路(mcpl)可以支持多种封装选项、多种i/o协议以及可靠性、可用性和可服务性(ras)特征。此外,物理层(phy)可以包括电层和逻辑层,并且可以支持更长的通道长度,包括高达并且在一些情况下超过大约45mm的通道长度。在一些实现方式中,示例mcpl可以以高数据速率操作,包括超过8-10gb/s的数据速率。

在mcpl的一个示例实现方式中,phy电层可以对传统的多通道互连解决方案(例如,多通道drami/o)进行改进,例如,通过以下多个特征对数据速率和通道配置进行扩展:作为示例,包括经调节的中间轨终端、低功率有源串扰消除、电路冗余、每位占空比校正和抗扭斜、线编码、和发送器均衡,以及潜在地其他示例。

在mcpl的一个示例实现方式中,可以实现phy逻辑层,其可以进一步有助于(例如,电层特征)对数据速率和通道配置进行扩展,同时还使得互连能够跨电层路由多个协议。这样的实现方式可以提供并定义模块化公共物理层,其是协议不可知的,并且被构建为潜在地与任何现有的或未来的互连协议一起工作。

转到图6,示出了表示包括多芯片封装链路(mcpl)的示例实现的系统的至少一部分的简化框图600。mcpl可以使用将第一设备605(例如,包括一个或多个子部件的第一管芯)与第二设备610(例如,包括一个或多个其他子部件的第二管芯)进行连接的物理电连接(例如,实现为线路的导线)来实现。在图600的高级别表示所示的特定示例中,(在通道615、620中的)所有信号可以是单向的,并且可以为数据信号提供线路,以具有上游数据转移和下游数据转移两者。虽然图6的框图600将第一部件605称为上游部件且将第二部件610称为下游部件,并且将mcpl的用于发送数据的物理线路称为下游通道615且将用于(从部件610)接收数据的线路称为上游通道620,但是应该理解,设备605、610之间的mcpl可以被每个设备用于在设备之间发送数据和接收数据两者。

在一个示例实现方式中,mcpl可以提供物理层(phy),其包括电mcplphy625a、b(或者统称为625)和实现mcpl逻辑phy630a、b(或者统称为630)的可执行逻辑。电的、或物理的phy625可以提供物理连接,通过该物理连接在设备605、610之间传送数据。可以结合物理phy625实现信号调节部件和逻辑,以便建立链路的高数据速率和通道配置能力,这在一些应用中可能涉及以大约45mm或更长的长度的紧密聚类的物理连接。逻辑phy630可以包括用于促进计时、链路状态管理(例如,用于链路层635a、635b)以及在用于通过mcpl进行通信的潜在地多个不同协议之间进行协议复用的逻辑。

在一个示例实现方式中,对于每个通道(例如,615、620),物理phy625可以包括一组数据线路,可以通过该组数据线路发送带内数据。在这个特定示例中,在上游通道和下游通道615、620中的每一个中提供50个数据线路,但是如布局和功率约束、期望应用、设备约束等所允许的,可以使用任何其他数量的线路。每个通道还可以包括用于通道的选通信号或时钟信号的一个或多个专用线路,用于通道的有效信号的一个或多个专用线路,用于流信号的一个或多个专用线路,以及用于链路状态机管理或边带信号的一个或多个专用线路。物理phy可以进一步包括边带链路640,在一些示例中,边带链路640可以是用于对连接设备605、610的mcpl的状态转换和其他属性进行协调的双向低频率控制信号链路,以及其他示例。

在一些实现方式中,可以对通过mcpl发送的带内数据(和其他数据)进行加扰。在一个示例中,可以使用伪随机二进制序列(prbs)在每个线路上对数据进行加扰。在一些实现方式中,可以使用线性反馈移位寄存器(lfsr)来生成对出站数据进行加扰的prbs。接收设备可以对数据进行解扰,以查看未加密的数据,以及其他示例。

如上面指出的,可以使用mcpl的实现来支持多个协议。事实上,可以在每个设备605、610处提供多个独立的事务层650a、650b。例如,每个设备605、610可以支持并利用两个或更多个协议,例如,pci、pcie、qpi、intel管芯内互连(idi),以及其他。idi是在管芯上使用的一致协议,用于在核心、最后一级高速缓存(llc)、存储器、图形以及io控制器之间进行通信。还可以支持其他协议,包括以太网协议、无限带宽协议以及其他基于pcie结构的协议。逻辑phy与物理phy的组合还可以用作管芯到管芯互连,以将一个管芯上的serdesphy(pcie、以太网、无限带宽或其他高速serdes)连接到其在其他管芯上实现的上层,以及其他示例。

逻辑phy630可以支持在mcpl上在这些多个协议之间进行复用。例如,可以使用专用流线路来断言经编码的流信号,该经编码的流信号识别哪个协议将应用于在通道的数据线路上基本上同时发送的数据。此外,逻辑phy630可以用于协商各种协议可以支持或请求的各种类型的链路状态转换。在一些实例中,可以使用通过通道的专用lsm_sb线路发送的lsm_sb信号,与边带链路640一起用于对设备605、610之间的链路状态转换进行通信和协商。此外,链路训练、错误检测、偏斜检测、去偏斜以及传统互连的其他功能可以部分地使用逻辑phy630来替换或管理。例如,通过每个通道中的一个或多个专用有效信号线路发送的有效信号可以用于用信号传达链路活动、检测偏斜、链路错误、和实现其他特征,以及其他示例。在图6的具体示例中,每个通道提供多个有效线路。例如,通道内的数据线路可以(在物理和/或逻辑上)进行捆绑或聚类,并且可以为每个聚类提供有效的线路。此外,可以提供多个选通线路,在一些情况下还为通道中的多个数据线路聚类中的每个聚类提供专用选通信号,以及其他示例。

如上面指出的,逻辑phy630可以用于对在由mcpl连接的设备之间发送的链路控制信号进行协商和管理。在一些实现方式中,逻辑phy630可以包括链路层分组(llp)生成逻辑660,其可以用于通过mcpl(即,带内)发送链路层控制消息。这样的消息可以通过通道的数据线路发送,其中流线路识别数据是链路层到链路层消息传递,例如,链路层控制数据以及其他示例。使用llp模块660使能的链路层消息可以分别有助于设备605、610的链路层635a、635b之间的链路层状态转换、功率管理、回送、禁用、重新居中、加扰以及其他链路层特征的协商和执行。

转到图7,示出了表示使用示例mcpl的特定通道中的一组线路(例如,615、620)的示例信号传递的图700。在图7的示例中,为通道中的五十(50)个总数据线路提供两个由二十五(25)个数据线路构成的聚类。示出了线路的一部分,而为了便于说明具体示例对其他部分(例如,data[4-46]和第二选通信号线路(strb))进行省略(例如,作为冗余信号)。当物理层处于活跃状态(例如,未断电或处于低功率模式(例如,l1状态))时,选通线路(strb)可以设置有同步时钟信号。在一些实现方式中,可以在选通的上升沿和下降沿两者发送数据。每个边沿(或半个时钟周期)可以划定单位间隔(ui)。因此,在这个示例中,可以在每个线路上发送位(例如705),允许每8ui发送一字节。字节时间段710可以被定义为8ui,或者用于在数据线路(例如,data[0-49])中的单个数据线路上发送一字节的时间。

在一些实现方式中,在一个或多个专用有效信号通道(例如,valid0、valid1)上发送的有效信号可以用作接收设备的先行指示符,以在被断言(为高)时向接收设备(或信宿)标识在后续时间段期间(例如,字节时间段710)在数据线路(例如,data[0-49])上数据从发送设备(或信源)被发送。可替代地,当有效信号为低时,信源向信宿指示在后续时间段期间信宿不会在数据线路上发送数据。因此,当信宿逻辑phy检测到有效信号未被断言(例如,在线路valid0和valid1上)时,信宿可以无视在后续时间段期间在数据线路(例如,data[0-49])上检测到的任何数据。例如,当信源实际上没有发送任何数据时,串扰噪声或其他位可能出现在数据线路中的一个或多个上。借助在先前时间段(例如,先前字节时间段)期间的低的、或未断言的有效信号,信宿可以确定在后续的时间段期间将无视数据线路。

在mcpl的线路中的每个线路上发送的数据可以严格地与选通信号对齐。可以基于选通来定义时间段(例如,字节时间段),并且这些时段中的每一个可以对应于其中信号要在数据线路(例如,data[0-49])、有效线路(例如,valid1、valid2)以及流线路(例如,stream)上发送的定义的窗口。因此,这些信号的对齐可以使得能够识别先前时间段窗口中的有效信号施加于后续时间段窗口中的数据,并且流信号施加于相同时间段窗口中的数据。流信号可以是经编码的信号(例如,针对字节时间段窗口的1字节数据),其被编码以识别应用于在相同时间段窗口期间被发送的数据的协议。

为了说明,在图7的特定示例中,定义了字节时间段窗口。在任何数据注入到数据线路data[0-49]上之前,在时间段窗口n(715)处断言有效。在后续时间段窗口n+1(720)处,在数据线路中的至少一些数据线路上发送数据。在这种情况下,在n+1(720)期间在全部五十个数据线路上发送数据。由于针对先前的时间段窗口n(715)的持续时间断言了有效,所以信宿设备可以确认在时间段窗口n+1(720)期间在数据线路data[0-49]上接收到的数据。另外,在时间段窗口n(715)期间有效信号的先行性质允许接收设备准备传入的数据。继续图7的示例,在时间段窗口n+1(720)的持续时间期间,有效信号保持被断言(在valid1和valid2上),使得信宿设备期望在时间段窗口n+2(725)期间数据通过数据线路data[0-49]发送。如果有效信号在时间段窗口n+2(725)期间保持被断言,则信宿设备可以进一步期望接收(并处理)在紧接的随后时间段窗口n+3(730)期间发送的附加数据。然而,在图7的示例中,在时间段窗口n+2(725)的持续时间期间对有效信号解除断言,向信宿设备指示在时间段窗口n+3(730)期间不会发送任何数据,并且在时间段窗口n+3(730)期间应该无视在数据线路data[0-49]上检测到的任何位。

如上面指出的,可以按通道来维持多个有效线路和选通线路。除了其他优点之外,这可以有助于在连接两个设备的相对长的物理线路的聚类间维持电路简单性和同步性。在一些实现方式中,一组数据线路可以被划分成数据线路的聚类。例如,在图7的示例中,数据线路data[0-49]可以划分成两个二十五个线路聚类,并且每个聚类可以具有专用的有效线路和选通线路。例如,有效线路valid1可以与数据线路data[0-24]相关联,并且有效线路valid2可以与数据线路data[25-49]相关联。每个聚类的有效线路和选通线路的每个“副本”上的信号可以是相同的。

如上面介绍的,可以使用流线路stream上的数据来向接收逻辑phy指示何种协议将应用于在数据线路data[0-49]上发送的对应数据。在图7的示例中,在与数据线路data[0-49]上的数据相同的时间段窗口期间,在stream上发送流信号,以指示数据线路上的数据的协议。在替代实现方式中,可以在先前的时间段窗口期间发送流信号,例如,利用对应的有效信号,以及其他潜在的修改。然而,继续图7的示例,在时间段窗口n+1(720)期间发送流信号735,其被编码以指示要应用于在时间段窗口n+1(720)期间通过数据线路data[0-49]发送的位的协议(例如,pcie、pci、idi、qpi等)。类似地,可以在随后的时间段窗口n+2(725)期间发送另一流信号740,以指示应用于在时间段窗口n+2(725)期间通过数据线路data[0-49]发送的位的协议,并且以此类推。在一些情况下,例如图7的示例(其中两个流信号735、740具有相同的编码、二进制ff),连续时间段窗口(例如,n+1(720)和n+2(725))中的数据可以属于相同的协议。然而,在其他情况下,连续时间段窗口(例如,n+1(720)和n+2(725))中的数据可以来自不同协议将应用于的不同事务,并且流信号(例如,735、740)可以被相应地编码以标识应用于数据线路(例如,data[0-49])上的顺序的数据字节的不同协议,以及其他示例。

在一些实现方式中,可以针对mcpl定义低功率或空闲状态。例如,当mcpl上的任一设备都没有发送数据时,mcpl的物理层(电和逻辑)可以进入空闲或低功率状态。例如,在图7的示例中,在时间段窗口n-2(745)处,mcpl处于安静或空闲状态,并且禁用选通以节省电力。mcpl可以转换出低功率或空闲模式,在时间段窗口n-1(例如,705)处唤醒选通。选通可以完成传输前导(例如,有助于对通道的线路中的每个线路以及信宿设备进行唤醒和同步),在其他非选通线路上的任何其他信号传递之前使选通信号开始。在这个时间段窗口n-1(705)之后,可以在时间段窗口n(715)处断言有效信号,以向信宿通知数据即将在后续时间段窗口n+1(720)到来,如上面讨论的。

在检测到mcpl通道的有效线路、数据线路、和/或其他线路上的空闲状况之后,mcpl可以重新进入低功率或空闲状态(例如,l1状态)。例如,在时间段窗口n+3(730)处开始并且向前进行,没有任何信号传递可以被检测。信源设备或信宿设备上的逻辑可以发起转换回低功率状态,再次(例如,时间段窗口n+5(755))使得选通进入功率节省模式下的空闲,以及其他示例和原理(包括本文稍后讨论的那些)。

物理phy的电特性可以包括以下中的一个或多个:单端信号传递、半速率转发时钟、互连通道的匹配以及发送器(信源)和接收器(信宿)的片上传输延迟、优化的静电放电(esd)保护、压焊块电容、以及其他特征。此外,可以将mcpl实现为与传统封装i/o解决方案相比实现更高的数据速率(例如,接近16gb/s)和能量效率特性。

转到图8,示出了说明示例mcpl的示例逻辑phy的简化框图800。物理phy805可以连接到包括逻辑phy810和支持mcpl的链路层的附加逻辑的管芯。在该示例中,管芯还可以包括支持mcpl上的多个不同协议的逻辑。例如,在图8的示例中,可以提供pcie逻辑815以及idi逻辑820,从而管芯可以使用pcie或idi通过连接两个管芯的相同mcpl进行通信,以及潜在的许多其他示例,包括其中在mcpl上支持多于两个协议或除pcie和idi之外的协议的示例。在管芯之间支持的各种协议可以提供不同级别的服务和特征。

逻辑phy810可以包括链路状态机管理逻辑825,用于结合管芯的上层逻辑的请求(例如,通过pcie或idi接收到的)来协商链路状态转换。在一些实现方式中,逻辑phy810还可以包括链路测试和调试逻辑(例如,830)。如上面指出的,示例mcpl可以支持通过mcpl在管芯之间发送的控制信号,以促进mcpl的协议不可知、高性能以及功率效率特征(以及其他示例特征)。例如,逻辑phy810可以支持结合通过专用数据线路对数据的发送和接收(例如,在上面的示例中描述的)来对有效信号、流信号以及lsm边带信号进行生成和发送以及接收和处理。

在一些实现方式中,复用(例如,835)和解复用(例如,840)逻辑可以包含于逻辑phy810中,或者以其他方式可由逻辑phy810访问。例如,可以使用复用逻辑(例如,835)来识别将被发送到mcpl上的数据(例如,体现为分组、消息等)。复用逻辑835可以识别对数据进行管控的协议并生成被编码以标识协议的流信号。例如,在一个示例实现方式中,可以将流信号编码为两个十六进制符号的字节(例如,idi:ffh;pcie:f0h;llp:aah;边带:55h等),并且可以在由所识别出的协议管控的数据的相同窗口(例如,字节时间段窗口)期间发送流信号。类似地,可以采用解复用逻辑840来解释传入的流信号以解码流信号并识别要应用于与数据线路上的流信号同时接收的数据的协议。然后,解复用逻辑840可以应用(或确保)协议特定的链路层处理,并使得数据由相应的协议逻辑(例如,pcie逻辑815或idi逻辑820)进行处理。

逻辑phy810还可以包括链路层分组逻辑850,其可以用于处理各种链路控制功能,包括功率管理任务、回送、禁用、重新居中、加扰等。llp逻辑850可以促进mclp上的链路层到链路层消息,以及其他功能。对应于llp信号传递的数据也可以通过在专用流信号线路上发送的被编码以识别数据线路llp数据的流信号来识别。还可以使用复用和解复用逻辑(例如835、840)来生成并解释对应于llp业务的流信号,并且使得这种业务由适当的管芯逻辑(例如,llp逻辑850)来处理。同样,mclp的一些实现方式可以包括专用边带(例如,边带855和支持逻辑),例如,异步和/或低频边带通道,以及其他示例。

逻辑phy逻辑810还可以包括链路状态机管理逻辑,其可以通过专用lsm边带线路生成并接收(以及使用)链路状态管理消息传递。例如,可以使用lsm边带线路来执行握手以使链路训练状态前进、退出功率管理状态(例如,l1状态)以及其他潜在的示例。lsm边带信号可以是异步信号,因为它不与链路的数据信号、有效信号以及流信号对齐,而是对应于信号传递状态转换,并且使在由链路连接的两个管芯或芯片之间的链路状态机对齐,以及其他示例。在一些示例中,提供专用lsm边带线路可以允许除去模拟前端(afe)的传统的静噪和接收到的检测电路,以及其他示例益处。

转到图9,示出了简化的链路状态机转换图900以及在状态转换之间利用的边带握手。例如,reset.idle状态(例如,其中执行锁相环(pll)锁定校准)可以通过边带握手转换到reset.cal状态(例如,其中链路被进一步校准)。reset.cal可以通过边带握手转换到reset.clockdcc状态(例如,其中可以执行占空比校正(dcc)和延迟锁定循环(dll)锁定)。可以执行附加的握手以从reset.clockdcc转换到reset.quiet状态(例如,对有效信号解除断言)。为了帮助mcpl的线路上的信号传递的对齐,可以通过center.pattern状态使线路居中。

在一些实现方式中,在center.pattern状态期间,发送器可以生成训练模式或其他数据。接收器可以调节其接收器电路来接收这种训练模式,例如,通过对相位插入器位置和参考电压(vref)位置进行置位并且对比较器进行置位。接收器可以对接收到的模式与预期模式进行连续比较,并将结果存储在寄存器中。在一组模式完成之后,接收器可以使相位插入器置位递增,保持参考电压相同。测试模式生成和比较过程可以继续,并且可以将新的比较结果存储在寄存器中,该过程重复逐步通过所有相位插入器值并且通过所有参考电压值。当模式生成和比较过程全部完成时,可以进入center.quiet状态。在通过center.pattern和center.quiet链路状态使线路居中之后,可以促进边带握手(例如,使用链路的专用lsm边带线路上的lsm边带信号)转换到link.init状态,以初始化mcpl并且使得能够在mcpl上发送数据。

如上面指出的,可以使用边带握手来促进多芯片封装中的管芯或芯片之间的链路状态机转换。例如,可以使用mcpl的lsm边带线路上的信号来同步跨管芯的状态机转换。例如,当满足退出状态(例如,reset.idle)的条件时,满足这些条件的一侧可以在其出站lsm_sb线路上断言lsm边带信号,并且等待另一远程管芯到达相同条件并在其lsm_sb线路上断言lsm边带信号。当两个lsm_sb信号都被断言时,每个相应管芯的链路状态机可以转换到下一状态(例如,reset.cal状态)。可以定义最小重叠时间,在其期间两个lsm_sb信号都应该在转换状态之前保持被断言。此外,可以在lsm_sb被解除断言之后定义最小静默时间以允许准确的周转检测。在一些实现方式中,每个链路状态机转换可以由这样的lsm_sb握手来调节和促进。

图10是更详细的链路状态机器图1000,其示出了可以包含于示例mcpl中的附加链路状态和链路状态转换中的至少一些。在一些实现方式中,示例链路状态机可以包括图10中所示的状态转换以及其他状态,可以提供“定向回送”转换以将mcpl的线路置于数字回送中。例如,mcpl的接收器线路可以在时钟恢复电路之后回送到发送器线路。在一些实例中,还可以提供“lb_recenter”状态,其可以用于对齐数据符号。另外,如图9所示,mcpl可以支持多个链路状态,包括活跃的l0状态和低功率状态(例如,l1空闲状态和l2睡眠状态),以及潜在的其他示例。作为另一示例,配置或居中状态(例如,center)可以被增强或本地支持在通电时重新配置链路,以允许重新分配链路的线路以围绕被确定为故障的、或边缘的链路的一个或多个线路来路由数据,以及其他示例。

图11是示出活跃状态(例如,l0)与低功率或空闲状态(例如,l1)之间的转换中的示例流程的简化框图1100。在该特定示例中,第一设备1105与第二设备1110使用mcpl可通信地耦合。在处于活跃状态时,通过mcpl的线路传输数据(例如,data、valid、stream等)。链路层分组(llp)可以通过线路(例如,数据线路,其中流信号指示数据是llp数据)进行传送,以帮助促进链路状态转换。例如,可以在第一设备1105与第二设备1110之间发送llp以协商从l0进入l1。例如,mcpl支持的上层协议可以传送进入l1(或另一状态)是期望的,并且上层协议可以使得llp通过mcpl被发送,以促进链路层握手以便使物理层进入l1。例如,图11示出了被发送的llp的一部分,包括从第二(上游)设备1110向第一(下游)设备1105发送的“进入l1”请求llp。在一些实现方式和上层协议中,下游端口不发起进入l1。作为响应,接收第一设备1105可以发送“更改为l1”请求llp,其中第二设备1110可以通过“更改为l1”确认(ack)llp来进行确认,以及其他示例。在检测到握手完成时,逻辑phy可以使边带信号在专用边带链路上被断言,以确认接收到ack并且设备(例如,1105)准备好并且期望进入l1。例如,第一设备1105可以断言发送到第二设备1110的边带信号1115以确认在链路层握手中接收到最终的ack。另外,第二设备1110还可以响应于边带信号1115而断言边带信号以向第一设备1105通知第一设备1105的边带ack。随着链路层控制和边带握手完成,可以将mcplphy转换为l1状态,使得mcpl的所有线路进入空闲电力节省模式,包括设备1105、1110的相应mcpl选通1120、1125。在第一设备1105和第二设备1110之一的上层级别层逻辑请求重新进入l0时,例如,响应于检测到数据将通过mcpl发送到另一设备,可以退出l1。

如上面指出的,在一些实现方式中,mcpl可以促进在潜在地支持多个不同协议的两个设备之间进行通信,并且mcpl可以促进潜在地根据多个协议中的任何一个协议通过mcpl的线路进行通信。然而,促进多个协议可能会使进入和重新进入至少一些链路状态复杂化。例如,虽然一些传统的互连具有单一的上层协议,假设主机的角色处于状态转换,但是具有多个不同协议的mcpl的实现方式有效地涉及多个主机。作为示例,如图11所示,可以通过mcpl的实现在两个设备1105、1110之间支持pcie和idi中的每一个。例如,将物理层置于空闲或低功率状态可以取决于首先从所支持的协议(例如,pcie和idi)中的每个获得的许可。

在一些实例中,仅支持用于mcpl的实现的多个支持的协议之一可以请求进入l1(或另一状态)。虽然可能其他协议同样请求进入相同状态(例如,基于识别mcpl上的类似条件(例如,很少或没有业务)),但是逻辑phy可以等待,直到在实际促进状态转换之前从每个上层协议接收到许可或指令为止。逻辑phy可以跟踪哪些上层协议已经请求状态改变(例如,执行对应的握手),并且在识别出协议中的每个已经请求了特定状态改变(例如,从l0到l1的转换或者会影响或干扰其他协议的通信的另一转换)时触发状态转换。在一些实现方式中,协议可能是盲目的,因为其至少部分地依赖于系统中的其他协议。此外,在一些实例中,协议可以期望(例如,来自phy的)对进入特定状态的请求的响应,例如,确认或拒绝所请求的状态转换。因此,在这种的实例中,在等待来自其他支持协议的许可以进入空闲链路状态时,逻辑phy可以生成对进入空闲状态的请求的合成响应,以便“欺骗”进行请求的上层协议,使其相信已进入特定状态(实际上当线路仍然活跃时,至少直到其他协议也请求进入空闲状态为止)。除了其他潜在的优点之外,这可以简化在多个协议之间协调进入低功率状态,以及其他示例。

逻辑phy的实现方式可以包括错误检测、错误报告以及错误处理逻辑。在一些实现方式中,示例mcpl的逻辑phy可以包括用于检测phy层解帧错误(例如,在有效线路和流线路上)、边带错误(例如,与lsm状态转换有关)、llp中的错误(例如,这对lsm状态转换是至关重要的)以及其他示例的逻辑。一些错误检测/解决可以被委派给上层逻辑,例如,适用于检测pcie特定的错误的pcie逻辑,或者委派给系统管理软件,以及其他示例。在一些实现方式中,可以提供错误检测和处理机制,例如,循环冗余校验(crc)、重试缓冲器以及其他潜在的示例,以帮助在mcpl上进行位错误检测。此外,无论是在管理软件中实现还是在逻辑phy中实现的错误检测逻辑都可以基于确定链路上的线路特定的位错误来确定特定线路是故障的或边缘的。

mcpl端口可以由以非常高的速度(例如,8gbs)操作的大量线路(例如,100个线路或更多)构成。例如,mcpl端口可以在每个方向上包括80个或更多个数据线路(例如,160+个总线路)。在一些实例中,可以在通过数据线路发送的微片(flit)中提供错误校正码,以允许在通过数据线路发送的数据中检测到错误。在一个特定示例中,crc可以包含于微片中或mcpl的未使用的数据线路中。例如,可以选择16位crc多项式,从而从crc生成的crc校验子可以用于识别特定的位错误,然后可以将其映射到链路的特定线路,以允许在mcpl中识别边缘数据线路。在一个示例中,可以使用校验子属性为0x1f053的16位多项式计算来识别不良线路。

用于实现mcpl的硬件和/或软件可以进一步提供用于识别和解决出现在mcpl的专用流标识符线路(例如“stream”)上的位错误的功能。在流线路上发送的流标识符中的位错误可能是特别有问题的,因为位错误可能导致在mcpl的数据线路上发送的对应数据的类型或协议被不正确地解释和不恰当地处理,导致链路错误和链路中的时延。

如上面指出的,mcpl可以时间复用潜在地多个不同协议的多个链路层和物理层业务流。mcpl的流(或stream_id)线路可以用于识别流起源(和目的地)。虽然来自在数据线路上发送的链路层的微片或分组流受诸如crc的错误校正码保护,但是流线路可能不受链路层crc保护,由于在phy层中使用(例如,插入、检查)stream_id以路由来自/去往链路层的流。在一些实现方式中,为了减轻扰乱mcpl的流线路位错误,可以选择尽管存在位错误但仍然可以被正确解释的流id码。例如,流id码可以被定义为一组多个不同数据类型或协议中的每一个,从而该组流id码被选择为具有汉明距离(例如,hd=4)和低频率(例如,0f)。这样的实现方式还发送解扰的流id码(例如,以便不“撤销”高汉明距离、低频率等的提供)。然而,这样的解决方案可能受到其实用性的限制。例如,高汉明距离、低频率的流id码将导致相对有限数量的码,特别是如果期望码中的每个都是平衡的(例如,在一段时间内相等数量的1和0)。因此,可能过度地限制不同流id和对应数据类型的数量。例如,对于hd=4的未加扰的8位流id,只有四个不同的流id码是可能的,其中只有两个是dc平衡的。

当错误导致超时并且以其他方式影响性能时,在mcpl流线路上发送的流id码中的错误可能会进一步产生问题。例如,检测到流id错误可能导致整个流被阻塞或使数据被丢弃。在较高mcpl带宽下,丢弃数据微片或流的其他部分可能导致链路层处的微片/分组的丢失,这将导致超时(例如,而不是重试)。等待超时可以产生反压,进一步不利地对性能造成影响。对性能的影响可能是显著的,因为在较高mcpl速度处流错误可能不是少见的(例如,在位错误率(ber)为10e14处平均错误间隔时间(mtbe)在1-3小时之间)。而且,由于多个流在mcpl中交织,所以流线路噪声可能会跨越多个流,从而放大对性能的影响。鉴于这些复杂性,在一些实现方式中,流id位错误可能导致整个mcpl的自动重新居中。然而,从性能角度来看,重新居中可能是昂贵的过程,其花费几微秒(例如,20μs),在该时间期间链路不可用于链路层业务。不超时的线程的性能也可能受到影响。

在一些实现方式中,可以使用允许对在mcpl的流线路上发生的大部分位错误进行错误检测和校正的流id格式。这样的位错误可以被快速识别和校正,而不会影响链路的性能。此外,在mcpl活跃时不能自动解决的所产生的位错误的出现在统计上非常罕见(例如,每年或几年),限制其中流id错误导致重新居中、重新配置、超时等的实例。在一个特定实现方式中,改进的流id格式可以被实现为与在数据线路上传输的数据类似的在流线路上传输的单个错误校正、双重错误检测(secded)码字。

转到图12,示出了表示以硬件和/或软件实现的组件的简化框图1200,在一些实例中,可以提供该组件用于检测通过mcpl1205的流线路发送的流id码中的位错误。例如,第一设备1210可以通过mcpl1205耦合到第二设备1215。在该示例中,第一设备1210可以是特定事务(或实例)中的发送(tx)设备,并且通过mcpl1205将数据发送到第二、接收(rx)设备1215。(应当理解,在其他实例中,设备1215可以作为发送设备通过mcpl将数据发送到设备1210,以及其他示例)。第一设备1210可以包括诸如流管理器1220的逻辑,其被配置为结合要在mcpl的数据线路上发送的数据生成流id。例如,控制器可以通过时分复用的mcpl通道指示或调度不同类型的数据。流管理器1220可以识别即将到来的数据窗口的类型并且识别该数据类型的对应流id码。流管理器1220可以生成流id码并且在流线路上对其进行发送,以与其在数据线路上发送的对应数据相关。在一个示例中,流id可以包括由奇偶生成器1225生成的奇偶(或校验)位。奇偶位可以包含于流id中。在一个示例中,流id位中的一些可以是码位,其用于识别对应类型的数据,而剩余的流id位是基于码位的值的奇偶位。

接收设备1215可以接收由发送设备1210结合在mcpl1205的窗口中发送对应类型的数据而生成的流id码。接收设备1215可以包括奇偶检测逻辑1230以读取包含于流id码中的码和奇偶值,以便确定在流id中是否存在位错误。可以选择码和奇偶值,以使得接收设备可以容易地识别流id码的哪些位具有错误,并且使这些位被反转以校正流id,例如,使用接收设备的流校正逻辑1235。奇偶检测1230和流校正1235可以在对应数据在接收设备1215处被处理之前发生,从而允许存在于流id码中的任何位错误被识别和校正,以使得流id码(及其对应的数据)在接收器处被恰当地处理。

转到图13,示例流id码1305的表示被呈现为要在mcpl的流线路上发送。流id码的长度可以对应于流id码被应用于的数据(并且要发送的)窗口的长度(例如,以单位间隔(ui))。例如,图13所示的示例可以对应于利用8uimcpl窗口的实现。在一些实现方式中,流id码可以是基于secded的码。在图13的示例中,流id码1305是用于利用四个奇偶位(p1、p2、p3、p4)保护4位码字(c1、c2、c3、c4)的8、4secded码。在这个特定的示例中,4位码字可以允许潜在地与十六种不同类型或格式的数据和/或符合十六种不同协议的数据相对应的十六个可能的流id通过相同的mcpl发送。在一个示例中,流编码可以是其中码/奇偶在更高/更低有效十六进制数字中的secded码。此外,在十六个潜在的码中,八个码(例如,00、33、55、66、99、aa、cc、ff)也提供了良好的汉明距离(hd=4)。码可以被预先分配给对应类型的数据。随着系统的成熟,可能添加数据类型,使得将这些添加的数据类型分配给剩余可用流id码中的一个。在一个示例中,可以在具有不太理想的汉明距离的任何可用流id码之前将具有良好汉明距离的码分配给数据流类型。

在一个说明性示例中,secded流id码可以包括根据码位c1、c2、c3、c4的二进制值生成的奇偶位p1、p2、p3、p4。例如,奇偶位的二进制值可以根据下式计算:

p1=c2+c3+c4

p2=c1+c3+c4

p3=c1+c2+c4

p4=c1+c2+c3+c4+p1+p2+p3=c1+c2+c3

其中“+”运算符表示逻辑异或(xor)运算。(例如,p1=c2+c3+c4=c2xorc3xorc4)。发送设备可以针对数据识别适当的流id(c1c2c3c4),并且计算对应的奇偶值(plp2p3p4),将流id与计算出的奇偶值串接以生成流id汉明码字c1c2c3c4plp2p3p4。然后可以通过mcpl的流线路将生成的流id码发送到接收设备。

当接收到流id码(c1c2c3c4plp2p3p4)时,接收器可以根据下式生成一组接收码r1、r2、r3、r4:

r1=c2+c3+c4+p1

r2=c1+c3+c4+p2

r3=c1+c2+c4+p3

r4=c1+c2+c3+c4+p1+p2+p3+p4

其中“+”运算符表示xor运算。根据接收码,接收设备可以进一步根据下式确定固定位置f1、f2、f3、f4:

f1=(!r1)&r2&r3&r4

f2=r1&(!r2)&r3&r4

f3=r1&r2&(!r3)&r4

f4=r1&r2&r3&r4

其中“&”运算符表示逻辑and运算,并且“!”运算符表示逻辑非或not运算。每个固定位置(f1、f2、f3、f4)可以针对码位(c1、c2、c3、c4)中对应的一个来识别码位是否有错误并且是否应该是固定的。例如,如果f1的值=“1”,则接收到的码位c1应该是固定的(即,接收到的cl的二进制值应该取反)。因此,可以将固定值(f1、f2、f3、f4)应用于接收到的码位(c1、c2、c3、c4),以生成经恢复的/经校正的码字dld2d3d4,其匹配如由发送设备最初生成的c1c2c3c4的值。例如,经恢复的/经校正的码字dld2d3d4可以根据下式生成:

d1=c1+f1

d2=c2+f2

d3=c3+f3

d4=c4+f4

其中c1、c2、c3、c4的值是由接收设备接收到的值(即,不一定等于由发送设备最初生成的值(由于位错误)),并且“+”运算符表示xor运算。

在一些实现方式中,可以在每次接收到流id码(c1c2c3c4plp2p3p4)时生成经恢复的/经校正的码字dld2d3d4,并且可以将其用作用于识别对应的数据类型并且因此处理对应数据(通过对应的mcpl数据线路接收到的)的码字。除了生成并使用经恢复的/经校正的码字dld2d3d4之外,接收器一般还可以另外确定接收到的流id(的任何码位)(c1c2c3c4)是否包括双重错误。例如,如果

(!r4)&(r1+r2+r3)=“1”,

则接收设备可以检测到流id中的双重错误。如果检测到这样的错误,则可以对错误进行标记并报告给系统管理软件和/或寄存器。另外,可以将流id值中的一些定义为保留的/未使用的/未分配的。如果最终码(例如,dld2d3d4)等于这些未使用的或保留的值中的一个,则接收设备还可以标记涉及mclp的流线路(并且支持tx和rx逻辑)的错误。

通过在设备的硬件和/或软件中实现的逻辑,可以促进与上面的示例中描述的计算类似的计算。此外,可以完成这样的计算,并且对流id进行校正/验证,而不增加管线的实质性时延。另外,在一些实现方式中,可能仅需要相对小的一组流id来识别要在mcpl的特定实现方式上支持的一组协议和/或数据类型。如果只使用少量码,则可以采用更强的流id码来进行校正并且更可靠地检测甚至更多的错误。例如,对于一组四个码,可以使用hd=5的8位码字,以及其他示例。

如利用mcpl的其他线路,使用基于secded的流id码能够实现对流线路进行加扰的能力。这可以帮助解决降噪、串扰、电迁移以及其他问题,这些问题同样会影响mcpl的流线路。在流线路被加扰的实例中,可以附加地使流线路以及其他数据线路居和重新居中,以及其他示例优点。

应该理解,上面示出的具体示例作为本文所描述的较一般原理的应用的非限制性示例提供。例如,替代实现方式可以应用类似的原理。例如,在一些替代例中,可以使用大于或小于8位的流id码。另外,除了mcpl的实现方式之外的技术和互连可以利用本文描述的原理,以及其他示例。

图14a-14b示出了说明用于检测和修复mcpl中的位错误的示例技术的流程图1400a-b。在图14a的示例中,可以针对要在链路上发送的多个类型中的特定的一个类型的特定数据确定1405流id。流id信号可以包括码分量,其具有标识对应数据的特定类型的值,并且包括基于码分量的奇偶分量。接收设备可以使用奇偶分量来确定流id信号是否具有一个或多个位错误。针对特定数据的流id信号可以通过链路与发送1415特定数据同时地(或以其他方式与其相关联地)发送1410到另一设备。可以在链路的专用数据线路上发送(1415)特定数据,而可以在链路的流线路上发送流id信号。随后可以在同一链路上发送不同类型的其他数据,生成要在与其他数据的发送相对应的流线路上发送的对应流id。其他数据的流id也可以包括码分量和奇偶分量。

转到图14b,可以在链路的流线路上接收1435流id信号,该流id信号对应于多个不同数据类型中的特定的一个类型的特定数据。流id信号可以包括识别特定数据具有该特定类型的码分量以及奇偶分量。在一些实现方式中,流id信号可以包括与上面描述的示例流id码类似的示例secded码。可以在数据线路上接收1440特定数据。可以使用流id信号的奇偶分量来确定1445接收到的流id信号中的错误。可以使用奇偶分量的值来校正1450错误。例如,可以使用奇偶分量(和/或码分量)来生成码分量的经校正的/经恢复的版本。可以基于经校正的流id码来处理1455特定数据。实际上,在物理链路的数据线路上接收到的数据可以基于如对应的流id指示的其对应类型来处理,以及其他示例。

注意,上面描述的装置、方法以及系统可以如前所述在任何电子设备或系统中实现。作为具体说明,下面的附图提供了利用如本文描述的本发明的示例性系统。由于下面的系统被更详细地描述,根据上述讨论公开、描述并且重访多个不同的互连。并且如易于显而易见的,上面描述的进展可以应用于这些互连、结构、或架构中的任何一个。

现在参考图15,根据示例实施例示出了系统1500的示例实现方式。如图15所示,多处理器系统1500是点到点互连系统,并且包括经由点到点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个可以是某一版本的处理器。在一个实施例中,1552和1554是诸如高性能架构的串行点到点相干互连结构的一部分。

虽然仅示出了两个处理器1570、1580,但是应该理解,本发明的范围不限于此。在其他实施例中,一个或多个附加的处理器可以存在于给定的处理器中。

处理器1570和1580示出为分别包括集成存储器控制器单元1572和1582。处理器1570还包括作为其总线控制器单元的一部分的点到点(p-p)接口1576和1578;类似地,第二处理器1580包括p-p接口1586和1588。处理器1570、1580可以使用p-p接口电路1578、1588经由点到点(p-p)接口1550交换信息。如图15所示,imc1572和1582将处理器耦合到相应的存储器,即存储器1532和存储器1534,存储器1532和存储器1534可以是本地附接到相应处理器的主存储器的一部分。

处理器1570、1580各自使用点到点接口电路1576、1594、1586、1598经由单独的p-p接口1552、1554与芯片组1590交换信息。芯片组1590还经由接口电路1592沿高性能图形互连1539与高性能图形电路1538交换信息。

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

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

如图15所示,各种i/o设备1514连同将第一总线1516耦合到第二总线1520的总线桥1518一起耦合到第一总线1516。在一个实施例中,第二总线1520包括低引脚计数(lpc)总线。在一个实施例中,各种设备耦合到第二总线1520,包括例如键盘和/或鼠标1522、通信设备1527,以及存储单元1528,例如,通常包括指令/代码和数据1530的磁盘驱动器或其他大容量存储设备。此外,音频i/o1524示出为耦合到第二总线1520。注意,其他架构是可能的,其中所包括的部件和互连架构变化。例如,代替图15的点到点架构,系统可以实现多点总线或其他这样的架构。

虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将会从中意识到许多修改和变化。旨在所附权利要求覆盖落入本发明的真实精神和范围内的所有这些修改和变化。

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

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

在一个实施例中,短语“被配置为”的使用指对用于执行指定或确定的任务的装置、硬件、逻辑、或元件进行布置、放在一起、制造、供应销售、导入和/或设计。在这个示例中,如果装置或其元件被设计、耦合和/或互连以执行指定的任务,则不操作的装置或其元件仍然“被配置为”执行所述指定的任务。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置为”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门以某种方式耦合,在操作期间输出1或0用于使能时钟。再次注意,术语“被配置为”的使用不一定需要操作,而是集中于装置、硬件、和/或元件的隐藏状态,其中在隐藏状态中,装置、硬件、和/或元件被设计为当装置、硬件、和/或元件进行操作时执行特定的任务。

此外,在一个实施例中,短语“用于”、“能够/用于”和/或“可操作以用于”的使用是指以使得能够以指定的方式使用装置、逻辑、硬件、和/或元件的方式设计的一些装置、逻辑、硬件、和/或元件。注意,如上所述,在一个实施例中,用于、能够用于、或可操作以用于的使用是指装置、逻辑、硬件、和/或元件的隐藏状态,其中装置、逻辑、硬件、和/或元件不进行操作,但是以使得能够以指定的方式使用装置的方式进行设计。

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

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

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

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

以下示例涉及根据本说明书的实施例。一个或多个实施例可以提供用于以下操作的装置、系统、机器可读存储装置、机器可读介质、和/或方法:在物理链路的多个数据线路上接收第一数据,在多个数据线路的至少一部分上接收第二数据,以及在物理链路的线路中的另一线路上接收对应于第二数据的流信号,其中第二数据具有第二类型,并且第一数据具有不同的第二类型,并且流信号包括指示第二数据具有第二类型的码分量以及用于识别流信号中是否存在位错误的奇偶分量。

在一个示例中,用于识别是否存在位错误的奇偶分量是从流信号的码分量导出的。

在一个示例中,提供错误检测逻辑,以至少部分地基于奇偶分量的值来确定码分量的位中的至少一个位是有错误的。

在一个示例中,错误检测逻辑还用于对码的位中的有错误的特定的一个位进行识别。

在一个示例中,提供错误校正逻辑,以自主地对码分量的被确定为有错误的位进行校正。

在一个示例中,对码分量的被确定为有错误的位进行校正包括使用奇偶分量的值来生成经校正的码分量。

在一个示例中,流信号是8位信号,码分量包括流信号的8个位中的4个位,并且奇偶分量包括流信号的8个位中的另外4个位。

在一个示例中,流信号包括基于单个错误校正、双重错误检测(secded)的码。

在一个示例中,8位信号对应于用于在物理链路上发送数据的8单位间隔(ui)窗口。

在一个示例中,新的流信号在其中对应数据在数据线路上发送的每个8ui窗口处被发送。

在一个示例中,流信号被加扰,并且物理层逻辑还用于对流信号进行解扰。

在一个示例中,第一数据和第二数据被加扰,并且物理层逻辑还用于对第一数据和第二数据进行解扰。

在一个示例中,码分量包括多个码值中的特定的一个码值,并且由物理层支持的每个数据类型被分配多个码值中的相应的一个码值。

在一个示例中,多个码值中的每个码值的汉明距离大于或等于hd=4。

在一个示例中,具有第一类型的数据是具有第一互连协议的,并且具有第二类型的数据是具有不同的第二互连协议的。

一个或多个实施例可以提供用于以下操作的装置、系统、机器可读存储装置、机器可读介质、和/或方法:在物理链路的多个数据线路上将第一数据发送到另一设备,在多个数据线路的至少一部分上发送第二数据,以及在物理链路的线路中的另一线路上发送对应于第二数据的流信号,其中第二数据具有第二类型,并且第一数据具有不同的第二类型,并且流信号包括指示第二数据具有第二类型的码分量以及用于识别流信号中是否存在位错误的奇偶分量。

在一个示例中,物理层逻辑使用伪随机二进制序列对流信号进行加扰,且经加扰的流信号包括通过另一线路发送到另一设备的流信号。

在一个示例中,物理层逻辑包括线性反馈移位寄存器(lfsr),并且伪随机二进制序列由lfsr生成。

在一个示例中,另一线路包括链路的流线路,并且物理层逻辑还用于断言与流线路和数据线路不同的有效线路,以指示数据在物理链路的数据线路的至少一部分上被发送。

在一个示例中,物理链路包括多协议链路,并且多协议链路被时分复用以在链路上发送多个不同协议的数据。

在一个示例中,提供奇偶逻辑,以根据码分量的值来确定奇偶分量的值。

一个或多个实施例可以提供包括互连的系统,该互连包括多个线路,其中多个线路包括多个专用数据线路、至少一个专用有效信号线路以及至少一个流信号线路。该系统还可以包括第一设备以及使用互连通信地耦合到第一设备的第二设备。第二设备可以包括用于以下操作的逻辑:在数据线路上将第一数据发送到第一设备;在多个数据线路的至少一部分上将第二数据发送到第一设备,其中第二数据具有第二类型,并且第一数据具有不同的第二类型;以及在物理链路的线路中的另一线路上将对应于第二数据的流信号发送到第一设备。流信号可以包括指示第二数据具有第二类型的码分量以及用于识别流信号中是否存在位错误的奇偶分量。

在一个示例中,第一设备用于根据奇偶分量来生成值,以确定流信号中是否存在位错误。

在一个示例中,第一设备用于至少部分地基于奇偶分量的值来生成流信号的经校正的版本。

贯穿本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包含于本发明的至少一个实施例中。因此,贯穿本说明书在各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,特定特征、结构或特性可以以任何合适的方式在一个或多个实施例中组合。

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

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