链路物理层接口适配器的制作方法

文档序号:17486355发布日期:2019-04-20 06:51阅读:444来源:国知局
链路物理层接口适配器的制作方法

本申请要求2016年10月1日提交的题为“link-physicallayerinterfaceadapter”的美国非临时专利申请第15/283,309号的优先权的利益,该申请通过引用整体并入本文。

本公开涉及计算系统,并且特别地(但非排他地)涉及点对点互连。



背景技术:

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

由于在较小的封装中的容纳更多的处理能力的能力,较小的计算设备已经愈发普及。智能手机、平板电脑、超薄笔记本电脑和其他用户设备呈指数级增长。但是,这些较小的设备依赖于服务器,用于数据存储和超出形状因子的复杂处理。因此,高性能计算市场(即服务器空间)的需求也增加了。例如,在现代服务器中,通常不仅有带有多个核的单个处理器,而且还有多个物理处理器(也称为多个插槽)以增加计算能力。但随着处理能力随着计算系统中设备的数量而增长,插槽与其他设备之间的通信变得更加关键。

实际上,互连已经从主要处理电通信的更传统的多点总线发展到促进快速通信的成熟互连架构。不幸的是,随着对未来处理器的需求以更高速率消耗,对应需求被放在现有互连架构的能力上。

附图说明

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

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

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

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

图5示出了潜在的高性能互连(hpi)系统配置的实施例。

图6示出了与hpi相关联的分层协议栈的实施例。

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

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

图9是示例mcpl上的示例发信号的表示。

图10是mcpl的简化框图。

图11是mcpl使用逻辑phy接口(lpif)与多个协议的上层逻辑接合的简化框图。

图12是示例mcpllpif的简化框图。

图13是用于链路层到物理层接口的适配器的简化框图。

图14示出了嵌入在数据流中的示例控制窗口的表示。

图15示出了示例握手的流程图。

图16是示例适配器的简化框图。

图17-19示出了包括适配器的链路层到物理层接口的示例使用。

图20示出了适配器促进链路层到物理层接口的握手的示例性使用。

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

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

各附图中相同的附图标记和名称表示相同的元件。

具体实施方式

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

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

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

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

参见图1,示出了由互连一组组件的点对点链路组成的结构的实施例。系统100包括耦合到控制器中心115的处理器105和系统存储器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术语中,例如设备,被称为端点。尽管没有具体示出,但是设备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是pcie协议栈,包括事务层205、链路层210和物理层220。接口,例如图1中的接口117,118,121,122,126和131,可以表示为通信协议栈200。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

pciexpress使用分组在组件之间传递信息。在事务层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层次结构内的请求者代理。因此,与源id310一起,本地事务标识符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。换句话说,在pcie链接中包含两个发送路径,即路径416和417,以及两个接收路径,即路径418和419。

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

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

在一个实施例中,可以利用超级通道互联(upi)来互连两个或更多个设备。upi可以实现下一代缓存一致的基于链路的互连。作为一个示例,upi可以用在高性能计算平台中,例如工作站或服务器,包括在pcie或其他互连协议通常用于连接处理器、加速器、i/o设备等的系统中。但是,upi并不局限于此。相反,upi可以用在本文描述的任何系统或平台中。此外,所开发的各个想法可以应用于其他互连和平台,例如pcie、mipi、qpi等。

为了支持多个设备,在一个示例实现方式中,upi可以包括指令集架构(isa)不可知(即,upi能够在多个不同的设备中实现)。在另一种情况下,upi也可用于连接高性能i/o设备,而不仅仅是处理器或加速器。例如,高性能pcie设备可以通过适当的转换桥(即upi到pcie)耦合到upi。此外,upi链路可以由许多基于upi的设备(例如处理器)以各种方式(例如,星形、环形、网格等)使用。图5示出了多个潜在的多插槽配置的示例实现方式。如图所示,双插槽配置505可包括两个upi链路;然而,在其他实现方式中,可以使用一个upi链路。对于较大的拓扑,可以使用任何配置,只要标识符(id)是可分配的并且存在某种形式的虚拟路径,以及其他附加或替代特征。如图所示,在一个示例中,四插槽配置510具有从每个处理器到另一个处理器的upi链路。但是在配置515中所示的八插槽实现方式中,并非每个插槽都通过upi链路彼此直接连接。但是,如果处理器之间存在虚拟路径或信道,则支持该配置。本地域中支持的处理器的范围包括2-32。除了其他示例,可以通过使用节点控制器之间的多个域或其他互连来达到更多数量的处理器。

upi架构包括分层协议架构的定义,在一些示例中包括协议层(相干,非相干,以及可选地,其他基于存储器的协议)、路由层、链路层和物理层。此外,upi还可以包括与功率管理器(例如功率控制单元(pcu))、测试和调试设计(dft)、故障处理、寄存器、安全性、以及其他示例相关的增强。图5示出了示例upi分层协议栈的实施例。在一些实施方案中,图5中说明的层中的至少一些层可以是可选的。每个层处理其自己的粒度级别或信息量(具有分组630的协议层620a,b,具有微片(flit)635的链路层610a,b,以及具有phit640的物理层605a,b)。注意,在一些实施例中,基于实现方式,分组可以包括部分微片、单个微片或多个微片。

作为第一示例,phit640的宽度包括链路宽度与位的1对1映射(例如,20位链路宽度包括20位的phit等)。微片可以具有更大的尺寸,例如184、192或200位。注意,如果phit640是20位宽并且微片635的大小是184位,那么需要分数的phit640来发送一个微片635(例如,需要20位的9.2个phit发送184位微片635或需要20位的9.6个phit发送192位微片,以及其他示例)。注意,物理层的基本链路的宽度可以变化。例如,每个方向的通道数可以包括2、4、6、8、10、12、14、16、18、20、22、24等。在一个实施例中,链路层610a,b能够嵌入单个微片中的多个不同事务,并且可以在微片内嵌入一个或多个头部(例如,1、2、3、4)。在一个示例中,upi将报头拆分成对应的时隙以启用在目的地为不同节点的微片中的多个消息。

在一个实施例中,物理层605a,b可以负责物理介质(电或光等)上的信息的快速传输。物理链路可以是两个链路层实体之间的点对点,例如层605a和605b。链路层610a,b可以从上层抽象物理层605a,b,并提供可靠地传输数据(以及请求)和管理两个直接连接的实体之间的流控制的能力。链路层还可以负责将物理信道虚拟化为多个虚拟信道和消息类。协议层620a,b依赖于链路层610a,b,以在将协议消息处理到物理层605a,b之前将协议消息映射到适当的消息类和虚拟信道中,以便跨物理链路进行传输。链路层610a,b可以支持多个消息,诸如请求、窥探、响应、回写、非相干数据以及其他示例。

upi的物理层605a,b(或phy)可以在电层(即,连接两个组件的电导体)上方和链路层610a,b下方实现,如图6所示。物理层和对应的逻辑可以驻留在每个代理上,并且将链路层连接在彼此分离的两个代理(a和b)上(例如,在链路任一侧上的设备上)。本地和远程电气层通过物理介质(例如电线、导体、光学等)连接。在一个实施例中,物理层605a,b具有两个主要阶段,初始化和操作。在初始化期间,连接对链路层是不透明的,并且发信号可能涉及定时状态和握手事件的组合。在操作期间,连接对链路层是透明的,并且发信号处于这样的速度:所有通道一起作为单个链路操作。在操作阶段期间,物理层将微片从代理a传输到代理b,并且从代理b传输到代理a。连接也称为链路,并在与链路层交换当前配置(例如宽度)的微片和控制/状态时从链路层抽象包括媒体、宽度和速度在内的一些物理方面。初始化阶段包括次要阶段,例如轮询,配置。操作阶段也包括次要阶段(例如,链路功率管理状态)。

在一个实施例中,可以实现链路层610a,b,以便在两个协议或路由实体之间提供可靠的数据传输。链路层可以从协议层620a,b抽象物理层605a,b,并且可以负责两个协议代理(a,b)之间的流控制,并向协议层(消息类)和路由层(虚拟网络)提供虚拟信道服务。协议层620a,b与链路层610a,b之间的接口通常可以处于分组级别。在一个实施例中,链路层处的最小传送单元被称为具有指定数量的位的微片,例如192位或一些其他面额。链路层610a,b依靠物理层605a,b来将物理层605a,b的传输单元(phit)成帧为链路层610a,b的传输单元(微片)。另外,链路层610a,b可以在逻辑上分成两部分,发送器和接收器。一个实体上的发送器/接收器对可以连接到另一个实体上的接收器/发送器对。流量控制通常在微片和分组的基础上执行。错误检测和纠正也可能在微片级别的基础上执行。

在一个实施例中,路由层615a,b可以提供灵活且分布式的方法来将upi事务从源路由到目的地。该方案是灵活的,因为可以通过每个路由器处的可编程路由表来指定用于多个拓扑的路由算法(在一个实施例中的编程由固件、软件或其组合来执行)。路由功能可以是分布式的;路由可以通过一系列路由步骤完成,每个路由步骤被通过在源路由器、中间路由器或目的地路由器处的表的查找来定义。源处的查找可用于将upi分组注入upi结构。中间路由器处的查找可用于将upi分组从输入端口路由到输出端口。目的地端口处的查找可以用于瞄准目的地upi协议代理。注意,在一些实现方式中,路由层可以是薄的,因为路由表以及路由算法没有由规范明确定义。这允许灵活性和各种使用模型,包括由系统实现方式定义的灵活平台架构拓扑。路由层615a,b依赖于链路层610a,b,用于提供多达三个(或更多)虚拟网络(vn)的使用-在一个示例中,两个无死锁的vn,vn0和vn1,其中在每个虚拟网络中定义了若干消息类别。共享自适应虚拟网络(vna)可以在链路层中定义,但是该自适应网络可以不直接暴露在路由概念中,因为每个消息类和虚拟网络可以具有专用资源并且保证向前进展,以及其他特征和示例。

在一些实现方式中,upi可以使用嵌入式时钟。时钟信号可以嵌入使用互连传输的数据中。利用嵌入在数据中的时钟信号,可以省略不同的和专用时钟通道。例如,这可能是有用的,因为它可以允许设备的更多引脚专用于数据传输,特别是在引脚空间非常宝贵的系统中。

可以在互连的任一侧上的两个代理之间建立链路。发送数据的代理可以是本地代理,接收数据的代理可以是远程代理。两个代理可以使用状态机来管理链路的各个方面。在一个实施例中,物理层数据通路可以将微片从链路层发送到电气前端。在一个实现方式中,控制路径包括状态机(也称为链路训练状态机或类似)。状态机的动作和从状态的退出可能取决于内部信号、定时器、外部信号或其他信息。实际上,某些状态(例如一些初始化状态)可能具有提供超时值以退出状态的定时器。注意,在一些实施例中,检测是指检测通道的两条插脚(leg)上的事件;但不一定同时。然而,在其他实施例中,检测是指由参考代理检测事件。作为一个例子,去抖动(debounce)指的是信号的持续断言(assertion)。在一个实施例中,upi支持在非功能通道的情况下的操作。这里,通道可以在特定状态处丢弃。

图7是示出示例性多芯片封装705的简化框图700,其包括使用示例性多芯片封装链路(mcpl)720通信地连接的两个或更多个芯片或管芯(例如,710、715)。虽然图7示出了使用示例mcpl720互连的两个(或更多个)管芯的示例,但是应当理解,本文描述的关于mcpl的实现的原理和特征可以应用于连接管芯(例如,710)和其他组件的任何互连或链路,包括连接两个或更多个管芯(例如,710、715),将管芯(或芯片)连接到管芯外的另一个组件,将管芯连接到封装外的另一个器件或管芯(例如,705),将管芯连接到bga封装,实现内插器上的补丁(point),以及可能其他示例。

通常,多芯片封装(例如,705)可以是电子封装,其中多个集成电路(ic)、半导体管芯或其他分立组件(例如,710、715)被封装到统一衬底(例如,硅或其他半导体衬底)上,促进组合组件用作单个组件(例如,就像更大的ic)。在一些情况下,较大的组件(例如,管芯710、715)本身可以是ic系统,例如片上系统(soc)、多处理器芯片或在设备上(例如,在单个管芯(例如,710、715)上)包括多个组件(例如,725-730和740-745)的其他组件。多芯片封装705可以提供灵活性,以便从潜在的多个分立元件和系统构建复杂和变化的系统。例如,管芯710、715中的每一个可以由两个不同的实体制造或以其他方式提供,其中封装705的硅衬底由第三实体提供,以及许多其他示例。此外,多芯片封装705内的管芯和其他组件本身可以包括互连或其他通信结构(例如,735、750),其为设备(例如,分别为710、715)内的组件(例如,725-730和740-745)之间的通信提供基础设施。各种组件和互连(例如,735、750)可能潜在地支持或使用多种不同的协议。此外,管芯(例如,710、715)之间的通信可能潜在地包括通过多个不同协议在管芯上的各个组件之间的事务。在多芯片封装上提供芯片(或管芯)之间的通信的设计机制可能是具有挑战性的,传统的解决方案采用基于寻求互连的组件(和期望的事务)的特定组合的高度专业化、昂贵且特定于封装的解决方案。

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

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

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

转到图8,示出了简化框图800,其表示包括多芯片封装链路(mcpl)的示例实现方式的系统的至少一部分。可以使用物理电连接(例如,实现为通道的线)将第一设备805(例如,包括一个或多个子组件的第一管芯)与第二设备810(例如,包括一个或多个其他子组件的第二管芯)连接来实现mcpl。在图800的高级表示中所示的特定示例中,所有信号(在信道815、820中)可以是单向的,并且可以为数据信号提供通道以具有上游和下游数据传输。虽然图8的框图将第一组件805称为上游组件,将第二组件810称为下游组件,并且将mcpl的用于发送数据的物理通道称为下游信道815并且将用于(自组件810)接收数据的通道称为上游信道820,应当理解,设备805、810之间的mcpl可以被每个设备用于在设备之间发送和接收数据。

在一个示例实现方式中,mcpl可以提供包括电mcplphy825a,b(或统称为825)的物理层(phy)以及实现mcpl逻辑phy830a,b(或统称为830)的可执行逻辑。电气或物理phy825可以提供物理连接,在其上,数据被在设备805、810之间传送。信号调节组件和逻辑可以结合物理phy825实现,以便建立链路的高数据速率和信道配置能力,其在某些应用中可能涉及长度约为45mm或更长的紧密集群物理连接。逻辑phy830可以包括用于促进时钟、链路状态管理(例如,用于链路层835a,835b)的逻辑,以及用于通过mcpl进行通信的潜在多个不同协议之间的协议复用。

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

如上所述,可以使用mcpl的实现方式来支持多个协议。实际上,可以在每个设备805、810处提供多个独立的事务处理层850a、850b。例如,每个设备805、810可以支持和利用两个或更多个协议,例如pci、pcie、qpi、intelin-dieinterconnect(idi)等。idi是一种在芯片上用于在核、最后一级缓存(llc)、存储器、图形和io控制器之间进行通信的相干协议。还可以支持其他协议,包括以太网协议、infiniband协议和其他基于pcie结构的协议。逻辑phy和物理phy的组合也可以用作管芯到管芯的互连,以将一个管芯上的serdesphy(pcie、以太网、infiniband或其他高速serdes)连接到在其他管芯上实现的其上层,以及其他示例。

逻辑phy830可以支持mcpl上的这些多个协议之间的复用。例如,专用流通道可用于断言(assert)编码流信号,该编码流信号识别哪个协议将应用于在信道的数据通道上基本同时发送的数据。此外,逻辑phy830可用于协商各种协议可支持或请求的各种类型的链路状态转换。在一些情况下,可以使用通过信道的专用lsm_sb通道发送的lsm_sb信号以及边带链路840来通信和协商设备805、810之间的链路状态转换。此外,链路训练、错误检测、扭斜检测、抗扭斜以及传统互连的其他功能可以部分地使用逻辑phy830来替换或控制。例如,通过每个信道中的一个或多个专用有效信号通道发送的有效信号可用于发信号通知链路活动,检测扭斜、链路错误,并实现其他功能,以及其他示例。在图8的特定示例中,每个信道提供多个有效通道。例如,可以捆绑或集群(物理地和/或逻辑地)信道内的数据通道,并且可以为每个群集提供有效通道。此外,在一些情况下,还可以提供多个选通通道,以便为信道中的多个数据通道群集中的每个群集提供专用选通信号,以及其他示例。

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

转到图9,示出了表示使用示例mcpl的特定信道中的一组通道(例如,815、820)的示例发信号的图900。在图9的示例中,为信道中的五十(50)个总数据通道提供两个二十五(25)个数据通道的群集。示出了一部分通道,而为了便于说明特定示例,省略了其他通道(例如,data[4-46]和第二选通信号通道(strb))(例如,作为冗余信号)。当物理层处于活动状态(例如,未断电或处于低功率模式(例如,l1状态))时,可以为选通通道(strb)提供同步时钟信号。在一些实现方式中,可以在选通的上升沿和下降沿上发送数据。每个沿(或半个时钟周期)可以划分单位间隔(ui)。因此,在该示例中,可以在每个通道上发送位(例如,905),允许每8ui发送一个字节。字节时间段910可以被定义为8ui,或者用于在数据通道(例如,data[0-49])中的单个数据通道上发送字节的时间。

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

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

为了说明,在图9的特定示例中,定义了字节时间段窗口。在任何数据被注入数据通道data[0-49]之前,在时间段窗口n(915)处断言有效。在随后的时间段,窗口n+1(920)数据在至少一些数据通道上发送。在这种情况下,在n+1(920)期间在所有50个数据通道上发送数据。因为在前一时间段窗口n(915)的持续时间内断言有效,所以宿设备可以在时间段窗口n+1(920)期间验证在数据通道data[0-49]上接收的数据。另外,在时间段窗口n(915)期间有效信号的前导性质允许接收设备为传入数据做好准备。继续图9的示例,在时间段窗口n+1(920)的持续时间期间,有效信号保持断言(在valid1和valid2上),使得宿设备期望在时间段窗口n+2(925)期间通过数据通道data[0-49]发送的数据。如果有效信号在时间段窗口n+2(925)期间保持断言,则宿设备可以进一步期望接收(和处理)在紧接的后续时间段窗口n+3(930)期间发送的附加数据。然而,在图9的示例中,在时间段窗口n+2(925)的持续时间期间,有效信号被解除断言,向宿设备指示在时间段窗口n+3(930)期间将不发送任何数据并且在数据通道data[0-49]上检测到的任何位应该在时间段窗口n+3(930)期间被忽略。

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

如上所述,流通道stream上的数据可用于向接收逻辑phy指示将哪种协议应用于在数据通道数据通道data[0-49]上发送的对应数据。在图9的示例中,在与数据通道data[0-49]上的数据相同的时间段窗口期间在stream上发送流信号,以指示在数据通道上的数据的协议。在替代实施方式中,可以在先前时间段窗口期间发送流信号,例如利用对应的有效信号以及其他可能的修改。然而,继续图9的示例,在时间段窗口n+1(920)期间发送流信号935,其被编码以指示将应用于在时间段窗口n+1(920)期间通过数据通道data[0-49]发送的位的协议(例如,pcie、pci、idi、qpi等)。类似地,可以在随后的时间段窗口n+2(925)期间发送另一个流信号940,以指示在时间段窗口n+2(925)期间应用于通过数据通道data[0-49]发送的位的协议,等等。在某些情况下,例如图9的示例(其中两个流信号935、940具有相同的编码,二进制ff),顺序时间段窗口(例如,n+1(920)和n+2(925))中的数据可以属于相同的协议。然而,在其他情况下,顺序时间段窗口(例如,n+1(920)和n+2(925))中的数据可以来自要应用不同协议的不同事务,并且流信号(例如,935、940)可以相应地编码以识别应用于在数据通道(例如,data[0-49])上的数据的顺序字节的不同协议,以及其他示例。

在一些实现方式中,可以为mcpl定义低功率或空闲状态。例如,当mcpl上的器件都没有发送数据时,mcpl的物理层(电气和逻辑)可以进入空闲或低功耗状态。例如,在图9的示例中,在时间窗口n-2(945),mcpl处于安静或空闲状态,并且禁用选通以节省功率。mcpl可以转换出低功率或空闲模式,在时间段窗口时间段窗口n-1(例如,906)唤醒选通。选通可以完成传输前同步码(例如,以帮助唤醒和同步信道的每个通道以及宿设备),在其他非选通信道上的任何其他发信号之前开始选通信号。在该时间段窗口n-1(906)之后,可以在时间段窗口n(915)处断言有效信号以通知宿:数据即将在随后的时间段窗口n+1(920)中到来,如上所述。

在检测到mcpl信道的有效通道、数据通道和/或其他通道上的空闲条件之后,mcpl可以重新进入低功率或空闲状态(例如,l1状态)。例如,可以在时间段窗口n+3(930)开始并且前进时不检测发信号。源设备或宿设备上的逻辑可以启动转换回低功率状态,再次导致(例如,时间窗口n+5(955))节能模式中的选通空闲,以及其他示例和原理(包括本文稍后讨论的那些)。

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

还可以在mpl的一些示例中可选地实现附加特征,以增强物理链路的性能特性。例如,可以提供线路编码。虽然如上所述的中轨终止可以允许省略dc数据总线反转(dbi),但仍然可以使用acdbi来降低动态功率。更复杂的编码也可用于消除l和0的最坏情况差异,以减少例如中轨调节器的驱动要求,以及限制i/o切换噪声,以及其他示例性益处。此外,还可以可选地实现发送器均衡。例如,在非常高的数据速率下,插入损耗对于封装内信道可能是重要的。在一些情况下,双抽头加权发送器均衡(例如,在初始加电序列期间执行)可足以减轻这些问题中的一些问题,以及其他问题。

转到图10,示出了简化框图1000,其示出了示例mcpl的示例逻辑phy。物理phy1005可以连接到管芯,管芯包括逻辑phy1010和支持mcpl的链路层的附加逻辑。在该示例中,管芯还可以包括用于支持mcpl上的多个不同协议的逻辑。例如,在图10的示例中,可以提供pcie逻辑1015以及upi逻辑1020,使得管芯可以通过连接两个管芯的相同mcpl使用pcie或idi进行通信,可能还有许多其他示例,包括在mcpl上支持两个以上协议或除了pcie和idi以外的协议的示例。管芯之间支持的各种协议可以提供不同级别的服务和功能。

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

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

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

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

转到图11,示出了简化框图1100,其示出了用于实现mcpl的逻辑的另一表示。例如,逻辑phy1010被提供有定义的逻辑phy接口(lpif)1105,通过该接口,多个不同协议(例如,pcie、idi、qpi等)1110,1115,1120,1125和发信号模式(例如,边带)中的任何一个可以与示例mcpl的物理层接合。在一些实现方式中,复用和仲裁逻辑1130也可以被提供为与逻辑phy1010分离的层。在一个示例中,lpif1105可以被提供为该muxarb层1130的任一侧上的接口。逻辑phy1010可以通过另一接口与物理phy(例如,mcplphy的模拟前端(afe)1005)接合。

lpif可以从上层(例如,1110,1115,1120,1125)抽象phy(逻辑和电/模拟),使得可以在对上层透明的lpif下实现完全不同的phy。这可以有助于促进设计中模块化和重用,因为在更新基础发信号技术phy时,上层可以保持完整,以及其他示例。此外,lpif可以定义多个信号,使得能够进行复用/解复用、lsm管理、错误检测和处理,以及逻辑phy的其他功能。例如,表1总结了可以为示例lpif定义的至少一部分信号:

表1:

如表1中所示,在一些实现方式中,可以通过alignreq/alignack握手来提供对齐机制。例如,当物理层进入恢复时,某些协议可能会丢失分组成帧。例如,可以校正分组的对齐,以保证链路层的正确的成帧识别。

转到图12,如上所述,要在支持mcpl的设备中实现的逻辑phy可以包括定义的逻辑phy接口(lpif),其定义mcplphy与多个不同协议(例如,pcie、idi、qpi、upi、usb等)中的任何一个的链路层之间的接口。图12是示出这种接口的示例的简化框图1200。例如,mcplphy1205可以包括逻辑phy1210和模拟前端(afe)/物理编码子层(pcs)1215。mcplphy可以经由lpif1220与其他通信协议的链路层(例如,1225)(且因此事务层(例如,1230))接合。

具有不同特性的多个通信协议的链路层可以利用通过mcpl提供的phy。在一些实现方式中,要在mcpl上使用的通信协议可以基于与mcpl的lpif不兼容或以其他方式不同的链路层到物理层接口。例如,在一个示例中,mcpllpif1220可以基于mcpllpif可以是链路层与mcpl逻辑phy之间的规范定义的公共接口,以促进各种协议的链路层与mcpl物理层之间的互操作性、设计和验证重用。在一些实现方式中,mcpllpif可以采用推送(或“自由放置”)模型,其中链路层将链路层微片推送到物理层。然而,一些通信协议可以对其链路层-phy接口使用不同的约定。例如,超级通道互联(upi)使用基于拉取(或“效用-得到(avail-get)”)模型。在拉取模型中,phy用于向链路层指示存在发送微片的机会,并且phy有效地从链路层“拉取”微片(在一些预定义数量的周期(或ui)后(例如,2个循环))。然而,基于推送的模型可以允许链路层对一个微片进行展示(stage),这导致phy将微片置于先进先出(fifo)队列中,并在下次机会时将微片发送到链路上。

当试图在mcplphy上承载变化的链路层业务时可能出现另外的问题。继续upi的示例,可以定义例如在空闲时段、状态转换和其他实例期间发送空的微片。通过发送这样的空微片可以促进滚动crc和继续配置。然而,mcpl在一些实现方式中可能不需要或不支持空微片,而是在链路上不发送数据(例如,用于省电和其他示例益处)。一些状态转换可以在链路层与物理层之间提供定义的握手,并且通过被设计为支持多种不同通信协议的标准化lpif,实现这种握手可能被进一步复杂化。在其他实现方式中,物理层控制可以在使用mcplphy来实现它们的通信协议中实现,以及其他示例问题。

在一些实现方式中,可以通过在支持mcpl的组件内提供或者作为具有实现适配器1305的硬件和/或软件逻辑的单独组件提供的链路层到物理层接口适配器(例如,1305)来解决上面讨论的示例问题中的至少一些。例如,转到图13,示出了简化框图1300,其示出了用于将来自通过协议的定义的接口(例如,upi的链路层到phy接口(ulpi)1310)发送的特定链路层(例如,upi链路层1020)的请求的各方面转换成与要在mcpllpif1220上发送的请求兼容的请求的示例适配器1305。同样,适配器1305还可以转换从mcplphy发送的消息的各方面(定制到lpif1220)以允许根据为该对应协议定义的链路层(ll)-phy接口(例如,ulpi1310)由协议的链路层(例如,1020)适当地处理这些。

接口适配器(例如,1305)可以促进各种特征将通过第一协议的ll-phy接口(例如,1310)的消息传递转换为与mcpllpif兼容的消息传递(反之亦然)。在一个示例中,接口适配器1305可以被配置为使upi的ulpi适应mcpl。例如,适配器1305可以使ulpi中使用的基于拉取的模型适应lpif中的以推送为中心的模型。upi到mcpl(或u2r)适配器可以进一步解决在upi中使用null微片的问题,例如,通过检测并接受来自upill的null微片并防止在mcplphy上发送这样的null微片来保留mcpl的省电特性。u2r适配器1305可以另外管理upill1020和mpclphy1210之间的upi的l1条目握手。适配器1305可以提供附加功能,包括通过upill与mcplphy之间的接口管理物理层控制消息传递,以及其他示例。

upi可以提供用于传送物理层控制信息和执行与定义为通过mcpl发送的物理层分组不同的物理层控制任务的机制。适配器(例如,1305)可以另外帮助解决mcpl的物理层控制实现与上面运行的协议之间的异步。例如,在upi中,当处于发送链路状态(tls)(例如,l0)时,可以向upi物理层提供执行控制任务的有限机会。例如,可以在l0状态期间在一个或多个通道上识别位错误和其他错误。在一个实现方式中,可以提供控制状态l0c,其中可以执行物理层控制任务。例如,l0c状态可以作为tls内的周期窗口提供,以允许在通过链路层发送的微片的流之间发送物理层控制消息。例如,如图14所示的示例中所示,l0状态可以细分为l0c间隔。可以将这些间隔定义为以循环的、可预测的间隔发生。每个l0c间隔可以以l0c状态或窗口(例如,1405)开始,其中可以发送物理层控制代码和其他数据。l0c间隔的残余(例如,1410)可以专用于发送微片。每个间隔中的l0c间隔和l0c状态的长度可以以编程方式定义,例如通过一个或多个设备的bios或另一个基于软件的控制器,以及其他示例。l0c状态可以比l0c间隔的残余短得多。例如,在一个示例中,l0c可以是8ui,而l0c间隔的残余是4kui的量级,以及其他示例。这可以允许其中可以发送相对短的预定义消息的窗口,而基本上不会中断或浪费链路数据带宽。

l0c状态消息可以在物理层级别传达各种条件。在一个示例中,一个设备可以例如基于位错误或其他错误超过特定阈值量来启动链路或通道的重置。这些错误也可以在l0c窗口中(例如前面的l0c窗口)传递。还可以利用l0c状态来实现其他带内发信号,例如用于辅助或触发其他链路状态之间的转换的发信号。在一个示例中,l0c消息可用于将链路从活动l0状态转换到备用或低功率状态,例如l1状态。如图15的简化流程图所示,特定l0c状态可用于传送l1进入请求(例如,1510)。当设备(或设备上的代理)等待对请求1510的确认时,可以发送另外的微片(例如,1520、1530)。链路上的另一个设备可以发送确认(例如,1540)。在一些示例中,还可以在l0c窗口中发送确认。在一些情况下,可以在接收/发送l1请求1510之后在下一个l0c窗口中发送确认。可以采用定时器(在phy中)来同步每个设备处的l0c间隔,并且请求设备可以基于识别出在下一个l0c窗口发送确认1540来识别确认1540,作为对请求1510的确认(例如,而不是独立的l1进入请求),以及其他示例。在一些实例中,可以通过与l1进入请求1510中使用的不同的l0c代码来传送确认。在其他实例中,确认1540可以包括在请求1510中使用的l1进入请求代码的回声,以及其他示例。此外,在替换示例中,可以在l0c窗口中传送非确认信号或nak。

除了(或作为替代)使用l0c代码的握手之外,可以结合重置和重新初始化链路来发送诸如检测超序列的超序列。在设备之间可以发生进一步的握手,作为由第一设备发送并由第二接收设备回声的超序列。如上所述,可以使用超序列来帮助重新初始化链路,包括对链路的通道去抖动、位锁定、字节锁定、解扰和抗扭斜。此外,设备可以利用定时器(例如,体现l0c间隔)来同步设备和链路进入所请求的l1状态。例如,在其他示例中,接收到确认1540可以向设备指示他们将在与发送确认的l0c窗口相对应的l0c间隔结束时相互进入(或开始进入)l1状态。例如,在其他可能的示例中,包括在确认1540中或以其他方式与确认1540相关联的l0c窗口中发送的数据可以指示设备进入l1状态的时间。在某些情况下,可以发送附加的微片(例如,1550),同时设备等待对应于转换到l1状态的超时,以及l0c状态的其他示例使用。l0c状态的可预测性质(即,根据预定调度发送物理层控制消息)可以与mcpl中采用的机制(例如,物理层分组(plp))不同,后者可以随时不可预测地被发送。

转到图16,示出了简化框图1600,示出了用于实现接口适配器的至少一部分以提供从基于拉取模型的第一ll-phy接口(例如,ulpi)向基于lpif推送的模型的转换的示例逻辑。在一个示例中,可以向u2r适配器提供在时钟(lclk)上运行的同步设计(例如,8ui时钟或时钟周期),该同步设计还对所支持的ll和mcpl逻辑phy进行时钟计时。公共重置信号(lrst)可以重置适配器,还可以用于重置支持的ll和mcpl逻辑phy。例如,可以在冷(电源良好)重置时断言lrst。在一个示例中,适配器沿接收路径(即,从mcplphy到支持的ll(例如,upill))的适应可以是简单的,特别是在虚拟和物理通道号相等的情况下。例如,在u2r适配器的情况下,mcpl的24通道lpif实现可以在每个lclk上提供有效(pl_valid)的192位微片(pl_data),因为mcplphy中未提供(或不需要)upi的l0c,而是使用plp。实际上,在某些周期中,可能没有要发送的微片,并且可以通过取消断言mcpl有效信号来简单地指示这些周期。

在图16的示例中,提供一组“n”个移位寄存器(例如,1605、1610)以合成由特定的基于拉取的协议(例如,upi)提供的从phy准备好用于ll微片的指示到拉取微片以在链路上输送的延迟。n个寄存器的数量可以对应于延迟的数量“n”个周期。例如,在图16的示例中,提供了2个移位寄存器以合成在upi的实现方式中存在的2周期延迟。在特定协议支持发送由其链路层生成的null微片(例如在upi中)的实现方式中,每个移位寄存器的默认值(例如,在重置之后)可以是null微片。每个寄存器还可以提供有标记位(例如,1615、1620),以指示寄存器当前是存储数据还是null微片(例如,如由适配器检测到的)。upi链路层可以经由dvalid信号1625向该信息提供微片。写指针(wen)和读指针(rp)跟踪每个微片被写入和读取的位置。

在图16的示例中,lp_irdy1630是发起者就绪信号,并且pl_trdy1635是用于mcpllpif的基于推送的模型的目标就绪信号。当发起者(链路层)经由lpif内的lp_irdy1630信号指示微片准备好并且目标(phy)也指示它已准备好处理该微片(如通过pl_trdy1635所示)时,可以发送链路层微片。在推送模型中,无论phy的准备情况如何,链路层都可以推送微片,并且在phy没有用于发送微片的开口的情况下,微片回填。在要使用mcplphy的协议(例如,upi)的ll-phy接口的基于拉取的模型内,可以如ll-phy接口内所定义的那样提供类似的信号。例如,在示例ulpi内,etxready1640对应于lpifpl_trdy并且指示phy在etxdata1645上稍后拉取微片一些周期(例如,2,如示例基于拉取的协议的实现方式中所定义的)的请求。可以在适配器中提供微片就绪(frdy)信号,以基于从ulpi接收的信号指示微片就绪,其中dvalid区分由链路层1660从null微片生成的数据微片。如果没有丢弃微片(并且作为ll-phy数据1670发送),则lp_irdy1630保持根据推送模型的要求被断言。当phy正在发送物理层控制消息时(例如,通过plp),pl_trdy1635可以被解除断言1个周期,而lp_irdy1630保持断言。假设这种取消断言将间隔至少‘n+1’个循环,尽管一些实现(例如下面在图19中讨论的)可以支持背靠背plp。除了在这样的pl_trdy1635解除断言期间,微片以零等待时间从(链路层1660的)ulpi传递到(逻辑phy1665的)lpif,这可以产生预定量的延迟(例如,延迟3个微片一个周期),以及其他示例功能。

图17示出了与示例接口适配器相关以启用ll到phy接口的示例发信号,其中链路层利用基于拉取的接口,并且phy利用基于推送的接口,诸如图16的示例中所描述的。例如,在该特定示例中,链路层将在来自phy的可用于发送微片的指示(例如,etxready)之后以特定周期延迟来对微片进行展示。实际上,在图17的示例中,重置(reset)信号1705被解除断言以允许数据从链路层流到phy。适配器可能导致合成的etxready1640在ulpi处被断言,触发在etxready1640断言后两个周期由upi链路层生成的etxdata1645上的数据流的拉取。为了在适配器上合成此延迟,移位寄存器(例如,具有定义的空值的2个寄存器(例如,在1720处)对应于合成的2个周期延迟)可以在etxready1640的断言处被清空。例如,当重置1705被解除断言时,lp_irdy1630和lp_trdy1635可以自动断言。不是根据lp_irdy1630和lp_trdy1635的断言立即传送数据(d0-d12),而是通过在两个周期值的空数据1720后面排队数据d0-d12来实现2个周期延迟,从而导致根据链路层所期望的将数据推送到mcplphy2个周期(在定义的空数据1720之后)。

为了确定是否应该在mcpl上实际传输从链路层(通过upli和适配器)接收的数据,适配器可以确定数据是否有效和/或是否对应于要发送的物理层控制消息。例如,微片就绪frdy信号1650可以指示根据链路层要发送微片的窗口。可以根据适配器对链路层微片的检查(在etxdata1645中)来设置dvalid信号1625,以指示该微片是否是要在phy上发送的种类。例如,在upi的示例中,可以在etxdata1645的微片中发送null微片,但是mcplphy可以被配置为不发送这样的微片。例如,可以提供适配器,其适于从mcpl上的传输中丢弃null微片(在1710中)。在其他示例中,适配器可以允许null微片以进行传输。

继续图17的示例,适配器可以检测到null微片(例如,1725、1730)。作为响应,适配器可以使dvalid信号1625被解除断言(例如,在1735、1740)以指示null微片是在从链路层传输到mcplphy之前(在1670上)要被丢弃的类型。适配器逻辑可以基于从来自链路层的etxready1640和etxdata1645信号生成的dvalid1625(和frdy1650)信号来生成合成lp_irdy信号。当lp_irdy信号1630被断言,并且lp_trdy信号1635也被断言时,来自etxdata1645的ll微片(例如,d0-d12)可以被发送(在lp_data1710处)到mcplphy上。另一方面,解除断言lp_irdy1630会导致null微片被丢弃。然而,虽然适配器在检测到null微片(例如,1725、1730)时导致lp_irdy1630被解除断言(例如,1745、1750),但应注意源链路层的本地发起者就绪信号etxready仍然被断言。可以在mcplphy处理数据(在lp_data1670处)以生成对应的有效信号1715,其用于指示在发送数据1710之前一个周期(经受phy的内部等待时间而延迟),下一个周期将包括有效数据还是无效数据(例如,丢弃的null,其应该被忽略)。

接口适配器可另外检测物理层控制事件。在一个示例中,在基于拉取和推送的接口模型中的每一个中,phy可以驱动物理层控制任务的引入。在upi中,如上所述,可以使用l0c窗口,其以可预测的间隔发生。在mcpl的示例中,可以在可能任何时间发送plp。在upi的情况下,upill本身不预期物理层控制事件。但是,对于使用基于拉取的接口模型的协议,与upi一样,链路层习惯于将phy作为其主设备。因此,如图17的示例所示,mcpl的phy可以通过简单地解除断言(例如,在1755处)lp_trdy1635来发起plp。对于使用基于拉取的接口的协议,phy对就绪信号1635解除断言可以自动地使ll就绪信号(例如,etxready1640)也被解除断言(在1760处)。etxready1640的解除断言在预定数量的周期(例如,在该示例中为2个周期)内可能不会在接口上反映。此外,虽然链路层已经将数据展示(例如,etxdata1645中的d7),但链路层的2个周期延迟导致三个微片延迟一个周期并且空数据随后出现3个周期以在etxdata1645数据流中形成“洞”。这个洞允许流在解除断言后(在1755、1760处)“赶回”。

如上所述,lp_trdy1635和etxready1640被解除断言以允许phy暂停ll微片以发送物理层控制数据。当发生这种情况时,链路层流量将在适配器的移位寄存器中回填,这样当重新断言lp_trdy1635(和etxready1640)时,适配器从其移位寄存器(在1770处的lp_data1670中)提供链路层数据,而不是直接从链路层流etxdata1645,以在lp_trdy1635的解除断言发生的时间点恢复数据微片的传输。得到的传输(txdata710)是数据微片d4-d6的流,接着是plp(对应于lp_trdy1635的解除断言),然后数据微片d7-d11(直到发送另一个null微片1730)。

在图17的示例中,plp的传输导致链路层在其流中创建空洞以允许移位寄存器被清空,并且“实时”链路层数据在plp之后继续传输若干个周期。在某些情况下,如果null微片被发送并被检测为在plp的多个周期内被发送,则null可能形成允许链路层数据赶上所需的“洞”。例如,在图18的示例中,发送plp1805,使得lp_trdy1635被解除断言(在1810处)。如在前面的示例中那样,这导致etxready1640也被自动解除断言(在1820处)。通常,在该示例实现方式中(定义从lp_trdy的断言到拉取etxdata1645的2个周期延迟),在etxready1640解除断言之后,空的数据集(例如,“na”数据)将遵循三个周期。但是在图18的示例中,在etxready1640解除断言之后,null微片1815到达三个周期,这反过来创建了一个同样可接受的洞,通过该洞可以释放存储在适配器移位寄存器中的数据微片(例如,d9-d11)以允许现场链路层数据馈送到phy。

图19示出了另一示例,示出了可以发送两个连续plp1905、1910的示例。在此示例中,两个移位寄存器再次由提供足够存储的适配器维护(在plp发送期间回填ll数据期间)以允许发送最多两个连续plp,其中允许存储在移位寄存器中的ll数据出现在plp之后的链路上,如图19所示。应该注意,任何ll数据都可以存储在适配器寄存器中。例如,数据或null微片可以与lp_trdy1635和etxready1640的解除断言相结合地存储在寄存器中。

转到图20,提供了另一个示例2000,其使用接口适配器来实现涉及链路层和phy层的握手,其可以至少部分地被mcpl实现方式中断,其中mcplphy顶部上运行的链路层与mcplphy之间不兼容。例如,在一些情况下,可以结合状态改变在ll-phy接口上执行握手,例如链路功率状态的改变。作为示例,下游链路层2005(例如,upi链路层)可以发起进入低功率(例如,l1)状态。例如,链路层2005可以将状态转换请求2010发送到下游phy。在通常情况下,这种握手是不起眼的并且没有发生事件地进行处理,但是在mcplphy的情况下,链路层2005发送到mcplphy2015的消息或者phy2015发送到链路层2005的消息可能不符合握手中的预期内容。例如,在图20的图示中,mcplphy2015可以接收l1进入请求2010并且根据其本地约定进行响应,即,使用包括在停顿请求(req)/确认(ack)交换中的停顿请求2020。然而,停顿请求2020可能是链路层2005所未预期的。

在一个实现方式中,可以提供接口适配器2030,例如如上所述,以使phy2015的lpif适应链路层2005(例如,upi链路层)的ll-phy接口(例如,ulpi)。例如,适配器2030可以拦截由链路层2005或phy2015做出的请求,并识别适配器要进行干预的实例,以确保以与链路层和mcplphy兼容的方式进行握手。例如,在图20的示例中,适配器2030拦截停顿req2020并生成由phy2015预期的停顿ack2035的合成版本,phy2015将其解释为响应于停顿reg2020而源自链路层。响应于停顿ack2035,mcplphy2015可以生成停顿请求2040,其指示进入l1以进行并且断言其目标就绪(trdy)信号。在该示例中,适配器2030允许trdy信号传播到链路层,而停顿请求2040由适配器230滤除。

类似的工作流程可以在上游链路层2050和mcplphy2055处进行,如图20的示例中进一步示出的。可以从链路层2050向phy2055发送l1进入请求2060,其中phy以由接口适配器2070拦截的停顿请求2065响应,其响应地生成合成的停顿ack2075。在此示例中,仅当下游和上游组件都请求进入l1时才可以输入l1。完成下游握手可以导致状态转换请求2080通过链路从下游组件发送到上游组件。当上游组件同样尝试进入l1时,可以完成链路到l1的进入。因此,响应于合成的停顿ack2075,可以将state_sts确认2080传送到链路层以确认进入l1。上游和下游组件可以完成它们自己的握手,导致l1转换确认(state_sts)也由phy2015通过适配器2030传送(在2085处)到链路层2005。适配器2030、2070可以根据所讨论的协议和在适配器中实现的对应逻辑提供除了在该有限示例中描述的那些之外的其他转换、过滤、拦截和握手合成,以及其他示例特征。

注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下图提供了用于利用如本文所述的本发明的示例性系统。由于更详细地描述了以下系统,因此从上面的讨论中公开、描述和重新考虑了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。

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

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

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

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

如图所示,核2101包括两个硬件线程2101a和2101b,它们也可以称为硬件线程槽2101a和2101b。因此,在一个实施例中,诸如操作系统的软件实体可能将处理器2100视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器2101a相关联,第二线程与架构状态寄存器2101b相关联,第三线程可以与架构状态寄存器2102a相关联,并且第四线程可以与架构状态寄存器2102b相关联。这里,每个架构状态寄存器(2101a、2101b、2102a和2102b)可以被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器2101a在架构状态寄存器2101b中被复制,因此能够为逻辑处理器2101a和逻辑处理器2101b存储单独架构状态/上下文。在核2101中,还可以为线程2101a和2101b复制其他较小的资源,例如分配器和重命名器块2130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,诸如重新排序/引退单元2135中的重新排序缓冲区、iltb2120、加载/存储缓冲区和队列。其他资源,例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据-tlb2115、执行单元2140以及乱序单元2135的部分是可能完全共享的。

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

核2101还包括解码模块2125,其耦合到获取单元2120以解码所获取的元件。在一个实施例中,获取逻辑包括分别与线程槽2101a、2101b相关联的各个定序器。通常,核2101与第一isa相关联,第一isa定义/指定在处理器2100上能执行的指令。通常作为第一isa的一部分的机器代码指令包括指令的一部分(称为操作码),其引用/指定要执行的指令或操作。解码逻辑2125包括从其操作码识别这些指令并在管线中传递解码的指令以便进行由第一isa定义的处理的电路。例如,如下面更详细讨论的,在一个实施例中,解码器2125包括被设计或适于识别特定指令的逻辑,例如事务指令。作为解码器2125识别的结果,架构或核2101采取特定的、预定义动作来执行与适当指令相关联的任务。重要的是要注意,可以响应于单个或多个指令来执行本文描述的任何任务、块、操作和方法;其中一些可能是新的或旧的指令。注意,在一个实施例中,解码器2126识别相同的isa(或其子集)。可替代地,在异构核环境中,解码器2126识别第二isa(第一isa的子集或不同的isa)。

在一个示例中,分配器和重命名器块2130包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器文件。然而,线程2101a和2101b可能能够乱序执行,其中分配器和重命名器块2130还保留其他资源,例如跟踪指令结果的重新排序缓冲器。单元2130还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器2100内部的其他寄存器。重新排序/引退单元2135包括组件,例如上面提到的重新排序缓冲器、加载缓冲器和存储缓冲器,以支持乱序执行和稍后乱序执行的指令的有序引退。

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

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

这里,核2101和2102共享对更高级或更远的高速缓存的访问,例如与片上接口2110相关联的第二级高速缓存。注意,更高级或更远是指高速缓存级增加或从执行单位进一步远离。在一个实施例中,较高级高速缓存是最后级数据高速缓存——处理器2100上的存储器层次结构中的最后高速缓存——诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可以与指令高速缓存相关联或包括指令高速缓存。跟踪高速缓存——一种类型的指令高速缓存——可以耦合在解码器2125之后以存储最近解码的跟踪。这里,指令可能是指宏指令(即,由解码器识别的一般指令),其可以解码为多个微指令(微操作)。

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

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

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

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

较大的编译器通常包括多个阶段,但是大多数情况下这些阶段包括在两个一般阶段中:(1)前端,即通常可以进行句法处理、语义处理和一些变换/优化的地方,以及(2)后端,即通常进行分析、转换、优化和代码生成的地方。一些编译器引用了一个中间部分,它说明了编译器的前端和后端之间描绘的模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以在任何上述阶段或遍以及编译器的任何其他已知阶段或遍中发生。作为说明性示例,编译器可能在编译的一个或多个阶段插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,然后在变换阶段将调用/操作变换为更低级别的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,以及优化代码以便在运行时执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。

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

现在参考图22,示出的是根据本发明的实施例的第二系统2200的框图。如图22所示,多处理器系统2200是点对点互连系统,并且包括经由点对点互连2250耦合的第一处理器2270和第二处理器2280。处理器2270和2280中的每一个可以是处理器的某个版本。在一个实施例中,2252和2254是串行点对点相干互连结构的一部分,例如高性能架构。结果,本发明可以在qpi架构内实现。

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

示出的处理器2270和2280分别包括集成存储器控制器单元2272和2282。处理器2270还包括作为其总线控制器单元的一部分的点对点(p-p)接口2276和2278;类似地,第二处理器2280包括p-p接口2286和2288。处理器2270、2280可以使用p-p接口电路2278、2288经由点对点(p-p)接口2250交换信息。如图22所示,imc2272和2282将处理器耦合到相应的存储器,即存储器2232和存储器2234,其可以是本地连接到相应处理器的主存储器的部分。

处理器2270、2280各自使用点对点接口电路2276、2294、2286、2298经由单独的pp接口2252、2254与芯片组2290交换信息。芯片组2290还经由接口电路2292沿着高性能图形互连2239与高性能图形电路2238交换信息。

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

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

如图22所示,各种i/o设备2214耦合到第一总线2216,以及将第一总线2216耦合到第二总线2220的总线桥2218。在一个实施例中,第二总线2220包括低引脚数(lpc)总线。在一个实施例中,各种设备耦合到第二总线2220,包括例如键盘和/或鼠标2222、通信设备2227和存储单元2228,诸如磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据2230。此外,音频i/o2224被示出耦合到第二总线2220。注意,其他架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图22的点对点架构,系统可以实现多分支总线或其他这样的架构。

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

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

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

在一个实施例中,措辞“被配置为”的使用是指布置、放在一起、制造、提供售卖、进口和/或设计执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有进行操作的装置或其元件仍‘被配置为’执行指定任务,前提是其被设计、耦合和/或互连来执行所述指定任务。纯粹作为说明性的示例,逻辑门可以在操作期间提供0或1。但是‘被配置为’提供使能信号到时钟的逻辑门不包括可提供1或0的每一个可能的逻辑门。相反,该逻辑门是以在操作期间1或0输出用于使能时钟的某种方式耦合的逻辑门。再次注意到,术语‘被配置为’的使用不要求操作,而是侧重于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件设计成当装置、硬件和/或元件正在操作时执行特定任务。

此外,在一个实施例中措辞“用于”、“能够/能”和/或“可操作用于”的使用是指以这样的方式设计来使能按指定方式使用装置、逻辑、硬件和/或元件的某种装置、逻辑、硬件和/或元件。如上文所提到的,在一个实施例中,用于、能够或可操作用于的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有正操作,但是设计成这样的方式以使得能够以指定方式使用装置。

如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,使用逻辑电平、逻辑值或逻辑上的值还称为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可以包括示例2的主题,其中所述移位寄存器包括多个移位寄存器,并且所述移位寄存器的数量对应于所述周期的数量。

示例4可以包括示例3的主题,其中接口适配器包括电路,并且电路包括移位寄存器。

示例5可以包括示例1-4中任一示例的主题,其中所述第一通信协议提供链路层null微片,并且所述接口适配器还用于检测在所述链路层数据中的null微片和数据微片,并且在进入所述物理层之前使得所述null微片被丢弃。

示例6可以包括示例5的主题,其中当检测到null微片时,所述接口适配器将对所述第三就绪信号解除断言,以使所述null微片被丢弃。

示例7可以包括示例6的主题,其中,对所述第三就绪信号解除断言使得所述第一就绪信号被解除断言。

示例8可以包括示例6-7中的任何一个的主题,其中所述第二链路层到物理层接口生成第四就绪信号以指示链路层数据就绪,并且当要在所述链接层数据中发送null微片时,所述第四就绪信号将保持断言。

示例9可以包括示例6-8中任一项的主题,其中所述接口适配器用于生成数据有效信号,以指示由所述第一通信协议支持的链路层数据是否要被从所述链路层发送到所述物理层,并且对所述第三就绪信号解除断言是基于所述数据有效信号的。

示例10可以包括示例1-9中任一项的主题,其中,在所述第一链路层到物理层接口中,链路层数据从所述第一通信协议的链路层到所述第一通信协议的物理层的传输是基于推送模型的,并且在所述第二链路层到物理层接口中,链路层数据从所述第二通信协议的链路层到所述第二通信协议的物理层的传输是基于拉取模型的。

示例11可以包括示例1-10中任一项的主题,其中,所述物理层用于使得提供一系列数据窗口,其中,所述链路层数据将被通过所述链路发送,并且不同通信协议的数据能够被在所述一系列数据窗口中的连续数据窗口中发送。

示例12是具有可执行指令的计算机可读介质、装置、系统或方法,用于识别来自第一通信协议的第一链路层到物理层接口的第一就绪信号,其中所述第一就绪信号指示第一协议的物理层准备好接受链路层数据以便在链路上传输,生成与第二通信协议的第二链路层到物理层接口兼容的第二就绪信号,其中,所述第二就绪信号根据预定义的延迟使链路层数据被从所述第二协议的链路层发送,生成与第一链路层到物理层接口兼容的第三就绪信号以向第一协议的物理层指示链路层数据将由第二通信协议的链路层发送,以及使用移位寄存器使所述链路层数据被根据所述预定义的延迟传递到所述物理层,其中,所述预定义的延迟包括从断言所述第一就绪信号到将所述链路层数据发送到所述物理层的延迟。

示例12是一种系统,包括第一组件,包括分层通信栈,其包括第一通信协议的链路层和不同的第二通信协议的物理层,其中,链路层数据到物理层的传输是基于所述第一通信协议中的拉取模型并且基于所述第二通信协议中的推送模型的,并且第一组件还包括包含一组移位寄存器的接口适配器,其中所述适配器用于使由所述第一通信协议的第一链路层到物理层接口生成的一个或多个信号适应所述第二通信协议的第二链路层到物理层接口,使由所述第二链路层到物理层接口生成的一个或多个信号适应所述第一链路层到物理层接口,并且使得使用所述一组移位寄存器根据所述第二链路层到物理层接口将链路层数据从所述链路层到所述物理层的传输被延迟,其中所述分层通信栈用于通过链路将所述链路层数据发送到第二组件。

示例14可以包括示例13的主题,其中所述物理层用于定义一系列数据窗口,其中链路层数据将在所述链路的数据通道上被发送。

示例15可以包括示例14的主题,其中所述物理层还用于在所述链路上发送有效信号以对应于所述一系列数据窗口中的每一个,并且每个有效信号指示是否在所述一系列数据窗口中的对应的一个中发送有效数据。

示例16可以包括示例15的主题,其中所述物理层还用于在所述链路上发送流识别信号以对应于一系列数据窗口中的每一个,并且每个流识别信号用于指示在所述一系列数据窗口中的对应的一个中发送的数据的通信协议。

示例17可以包括示例16的主题,其中所述通信协议是多个不同通信协议中的一个,不同通信协议的数据将在连续数据窗口中被发送,并且所述第一组件的链路层包括对应于多个不同协议的多个链路层。

示例18可以包括示例17的主题,还包括所述第二组件,其中所述第二组件包括分层协议栈,所述分层协议栈包括所述多个链路层和所述物理层。

示例19可以包括示例17-18中任一个的主题,其中所述多个链路层中的另一链路层的链路层到物理层接口与所述第一链路层到物理层接口兼容。

示例20可以包括示例13-19中任一项的主题,其中第二通信协议包括超级通道互联(upi)。

示例21可以包括示例20的主题,其中所述第一通信协议基于快速外围组件互连(pcie)。

示例22可以包括示例13-21中任一项的主题,其中所述第一通信协议提供链路层null微片,并且所述接口适配器还用于检测在所述链路层数据中的null微片和数据微片,并且在进入所述物理层之前使所述null微片被丢弃。

示例23可以包括示例13-22中任一项的主题,其中所述接口适配器还用于:识别要被发送到第二组件的物理层控制消息,使用所述一组移位寄存器在物理层控制消息期间缓冲链路层数据,以及使所述链路层数据停止与用于发送所述物理层控制消息的数量的周期相对应的数量的周期。

示例24可以包括示例23的主题,其中所述物理层控制消息包括物理层分组(plp)。

示例25可以包括示例13-24中任一个的主题,还包括边带信道,用于在第一组件与第二组件之间传送状态转换信息。

在本说明书通篇提到“一个实施例”或“实施例”是指结合该实施例描述的特定的特征、结构或特性包括在本公开的至少一个实施例中。因此,在本说明书通篇各处出现的措辞“在一个实施例中”或“在实施例中”不一定都指同一实施例。此外,特定的特征、结构或特性可以任何适合的方式结合在一个或多个实施例中。

在前面的说明书中,已经参考具体的示例性实施例进行了详细说明。然而,将显而易见的是,可以对其进行各种修改和改变,而不偏离如随附权利要求中阐述的本发明的更宽泛的精神和范围。说明书和附图因此应在说明性的意义而非限制性的意义上考虑。此外,前面对实施例和其它示范性语言的使用不一定是指同一实施例或同一示例,但是可以指不同和独特的实施例以及可能同一实施例。

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