在多通路链路中动态地协商不对称链路宽度的制作方法

文档序号:19634677发布日期:2020-01-07 11:52阅读:350来源:国知局
在多通路链路中动态地协商不对称链路宽度的制作方法



背景技术:

互连可用于提供系统内不同设备之间的通信,使用某种类型的互连机制。用于计算机系统中的设备之间的通信互连的一种典型通信协议是快速外围组件互连(快速pcitm(pcietm))通信协议。该通信协议是加载/存储输入/输出(i/o)互连系统的一个示例。通常根据该协议以非常高的速度串行地执行设备之间的通信。

附图说明

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

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

图3是根据本公开的实施例的示例快速外围组件互连(pcie)链路架构的示意图。

图4a是根据本公开的实施例的示例多通道互连架构的示意图。

图4b是根据本公开的实施例的示例通道方向切换的示意图。

图5a是根据本公开的实施例的示例对称链路拓扑的示意图。

图5b是根据本公开的实施例的示例非对称链路拓扑的示意图。

图5c是根据本公开的实施例的示例性非对称链路拓扑的示意图。

图6是根据本公开的实施例的示出了通道宽度可变性的排列的可变链路宽度拓扑的示意图。

图7a-图7b是根据本公开的实施例的用于扩展多通道链路的链路宽度的示例逻辑堆栈实现的示意图。

图8是根据本公开的实施例的用于在多通道链路中动态地协商非对称链路宽度的过程流程图。

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

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

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

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

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

具体实施方式

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

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

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

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

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

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

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

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

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

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

在一个示例中,分配器和重命名块130包括分配器以保留资源,诸如用于存储指令处理结果的寄存器文件。然而,线程101a和101b潜在地能够乱序执行,其中分配器和重命名块130还保留其他资源,例如用于跟踪指令结果的重排序缓冲器。单元130还可以包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器100内部的其他寄存器。重排序/引退单元135包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持乱序执行以及随后按顺序引退乱序执行的指令。

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

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

本文中,核101和102共享对诸如与片上接口110相关联的二级高速缓存之类的较高级别或进一步靠外的高速缓存的存取。注意,较高级别或进一步靠外的高速缓存指的是高速缓存级别增加或从执行单位获得更多的路径。在一个实施例中,较高级高速缓存是最后一级数据高速缓存—处理器100上的存储器层级中的最后的高速缓存—诸如第二或第三级数据高速缓存。但是,更高级别的高速缓存并不受限于此,因为它可能与指令高速缓存相关联或包含指令高速缓存。踪迹高速缓存(一种类型的指令高速缓存)可以耦合在解码器125之后以存储最近解码的踪迹。本文中,指令可能是指可被解码成多个微指令(微操作)的宏指令(即,由解码器识别的一般指令)。

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

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

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

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

较大的编译器通常包括多个阶段,但是大多数情况下,这些阶段被包括在两个一般阶段内:(1)前端,即通常其中可以发生句法处理、语义处理和一些转换/优化,以及2)后端,即通常其中发生分析、转换、优化和代码生成。一些编译器引用中间的部分,它示出了编译器的前端和后端之间的界限的模糊。因此,对编译器的插入、关联、生成或其他操作的引用可以发生在上述阶段或遍中的任何,以及编译器的任何其他已知阶段或遍中。作为示出性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等,诸如在编译的前端阶段中插入调用/操作,并且然后在转换阶段期间将调用/操作转换为较低级的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,并优化代码以在运行时期间执行。作为具体的示出性示例,二进制代码(已编译的代码)可以在运行时期间被动态优化。本文中,程序代码可以包括动态优化代码、二进制代码或其组合。

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

pcie支持热插拔功能,但是可能缺乏向系统软件报告信息的某些关键位的一致方式,使得pcie子系统难以被最佳地管理,并且导致系统限制和差的用户体验。这些相同的限制会影响融合输入/输出(cio)或“开放”thunderbolt,因为这些i/o配置使用pcie作为隧道形式的i/o架构。

cio是用于pcie和显示端口的隧道。cio链路可以是单个通道或两个通道聚合,以10gbps至40gbps或更高速度运行。cio可以跨usb类型c连接器(作为备用模式)运行,并在系统盒外部启用pcie设备。

接下来参考图2,示出了pcie串行点对点结构的实施例。尽管示出了pcie串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示的实施例中,基本pcie链路包括两个、低压差分驱动信号对:发送对206/211和接收对212/207。因此,设备205包括传输逻辑206以将数据发送到设备210以及接收逻辑207以从设备210接收数据。换句话说,两个发送路径,即路径216和217,以及两个接收路径,即路径218和219,包含在pcie链路中。

诸如设备205和设备210之类的两个设备之间的连接被称为链路,例如链路215。链路可以支持一个通道-每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了缩放带宽,链路可以聚合由xn表示的多个通道,其中n是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。发送或接收路径指的是用于发送或接收数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其他通信路径。在图2中,示出了一个通道,并且所述通道包括发送路径216和217以及接收路径218和219。在该应用中,发送路径也称为tx线;并且接收路径也称为rx线。

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

链路中的每个通道可包括一个或多个路径或信令信道。在一些实现中,可以使用差分信令,并且信令信道可以包括一个或多个差分信令对。在一些实现中,例如基于pcie的互连,默认情况下,链路的通道可以被定义为具有至少一个差分信令对,该差分信令对初始被配置用于将数据从第一设备205发送到第二设备210,以及至少一个附加差分信令对,其初始地被配置用于在第一设备205处从第二设备210接收数据,使得该通道促进第一和第二设备之间的双向通信。

然而,诸如本文所讨论的通道的重新配置可以使单个通道被重新配置成一个或多个单向通道,以及其他配置。另外,链路可以包括多个信道或通道,以增加能够在链路上承载的总潜在带宽。在多信道链路的一些实现中,链路可以初始地被配置为具有相同数量的发送和接收信道。另外,用于实现每个通道的物理线路同样可以是平衡的,使得在每个通道中包括相等或相当数量的物理线路,以及其他示例实现。

在一些计算系统中,利用允许多个协议共存的接口,许多应用使用非对称带宽分配。在一些情况下,出站(或下行)带宽大于入站(或上行)带宽,例如在显示应用中,其中,数据从中央处理系统发送到显示设备(例如监视器)。在某些情况下,上行带宽大于下行带宽。当i/o接口的总带宽有限时,某些通道未得到充分利用,而其他通道则被超额订阅。本公开描述了对称接口到不对称接口之间动态地切换,而不会影响当前业务。这里描述的系统、方法和设备可以保持事件流完整并且可以使用可用的带宽路径,而不会影响用户体验。

诸如pcie、超级路径互连(upi)、thunderbolt(tbt和其他融合io(cio))等的多通道互连是对称链路。也就是说,对于x4链路,4个通道可以被配置为上行通道,而4个通道可以被配置为下行通道。有许多新兴应用,其中带宽需求是不对称的,或者可以随时间动态变化。例如,连接到存储器驱动器(md)的中央处理单元(cpu)可以在入站(从md到cpu)方向上使用比出站方向更多的带宽,因为在md应用中,读比写更频繁,并且写涉及写操作之前的读操作。非对称链路宽度可以基于pciephy支持基于序列化-反序列化(serdes)的差分dimm或存储器驱动型互连。本公开内容促进非对称链路配置,其中一些通道可以是双向通道。例如,双向通道可以通过将发送-接收(tx-rx)对转换为rx-tx对来操作为两个独立的单向通道,反之亦然。本公开还描述了取决于应用的带宽需求动态地改变每个方向上的通道数量。这里描述的系统、方法和计算机程序产品可以应用于基于pcie的互连,以及其他类型的互连,并且还适用于互连重定时器的链路。

本公开描述了用于取决于工作负载和每个硬件是否可以支持这种方向性变化来基于每个通道改变多通道链路的一个或多个传输路径的方向的系统、方法和设备。

图3是根据本公开的实施例的示例快速外围组件互连(pcie)链路架构300的示意图。pcie链路架构300包括第一组件302,其可以是符合pcie协议的上行组件、根复合体或交换机。第一组件302可以包括下行端口310,其促进跨链路322与上行组件通信,例如符合pcie协议的链路。第一组件302可以耦合到第二组件308,第二组件308可以是符合pcie协议的下行组件、端点或交换机。在一些实施例中,第一组件可以链接到一个或多个中间组件,例如第一重定时器304和第二重定时器306。

在实施例中,第一组件302可以包括下行端口310以促进与第二组件308(如果直接连接)或与重定时器304的上行(伪)端口312的下行通信(例如,朝向第二组件308)。第二组件308可以包括上行端口320,以促进与第一组件302(如果直接连接)或与重定时器304的下行(伪)端口312进行上行通信(例如,朝向第一组件302)。

在图3所示的示例中,第一组件302可以通过第一链路段324链接到第一重定时器304。同样,第一重定时器304可以通过链路段326链接到第二重定时器306。第二重定时器306可以通过链路段328链接到第二组件308。链路段324、326和328可以构成链路322的全部或一部分。

链路322可以促进第一组件302和第二组件308之间的上行和下行通信。在实施例中,上行通信是指从第二组件308向第一组件302发送的数据和控制信息;并且下行通信是指从第一组件302向第二组件308发送的数据和控制信息。如上所述,一个或多个重定时器(例如,重定时器304和306)可用于扩展第一组件302和第二组件308之间的链路322的范围。

包含一个或多个重定时器(例如,重定时器304、306)的链路322可以以与采用类似协议但没有重定时器的链路实现的数据速率相当的数据速率形成两个或更多个单独的电子链路。例如,如果链路322包括单个重定时器,则链路322可以形成具有两个单独的子链路的链路,每个子链路以8.0gt/s或更高的速率存在。如图3所示,可以利用多个重定时器304、306来扩展链路322。可以通过两个重定时器304、306定义三个链路段322、324和326,其中第一子链路322将第一组件302连接到第一重定时器304第二子链路324将第一重定时器304连接到第二重定时器306,并且第三子链路326将第二重定时器306连接到第二重定时器306。

如示例图3所示,在一些实现中,重定时器可以包括两个端口(或伪端口),并且端口可以动态地确定它们相应的下行/上行方向。在实施例中,重定时器304可以包括上行端口312和下行端口314。同样,重定时器306可以包括上行端口316和下行端口318。每个重定时器304、306可以具有上行路径和下行路径。此外,重定时器304、306可以支持包括转发模式和执行模式的操作模式。在一些实例中,重定时器304、306可以解码在子链路上接收的数据,并且重新编码它将在其另一个子链路上向下行转发的数据。这样,重定时器可以在重新生成比特流并将比特流重新发送到另一个设备或甚至另一个重定时器(或转接驱动器或转发器)之前捕获所接收的比特流。在某些情况下,重定时器可以修改它接收的数据中的某些值,例如处理和转发有序集合数据时。此外,重定时器可以支持任何宽度选项作为其最大宽度,例如由诸如pcie的规范定义的一组宽度选项。

随着串行互连(例如,pcie、upi、usb等)的数据速率增加,重定时器越来越多地用于扩展信道覆盖范围。多个重定时器可以级联,以实现更长的信道覆盖范围。预计随着信号速度的增加,通道范围通常会降低。因此,随着互连技术的加速,重定时器的使用可能变得更加普遍。作为示例,具有16gt/s的pciegen-4,采用支持pciegen-3(8gt/s),pcie互连中重定时器的使用可能会增加,随着速度的增加,其他互连中情况可能就是如此。

在链路建立之前或当链路322不能正常工作时,系统软件可以访问下行端口310(例如,在第一组件302中,其可以是上行组件,例如根复合体或交换机)。在实施例中,可以设置诸如链路能力寄存器之类的寄存器以在下行端口310中执行时钟模式选择。系统固件/软件可以将下行端口310配置为预期模式,并且如果需要改变,则这将是由系统固件/软件完成,而不是由硬件完成。

在实施例中,链路架构300可以包括控制器集线器350。控制器集线器350可以是根复合体、中央处理核心或主机系统的其他控制器逻辑的一部分。控制器集线器可以包括系统管理器352。系统管理器352可以用硬件电路和/或软件实现,例如通过体现在非暂时性计算机可读介质中的系统管理软件。例如,系统管理器可以实现为软件管理器、硬件电路(例如,协议栈电路),固件(例如,数据处理器的固件)或这些的一些组合。系统管理器352可以包括cio连接管理器、pcie连接管理器、usb连接管理器或其他连接管理逻辑,其可以建立和/或拆除跨多通道链路(例如,基于pcie、usb或cio协议的链路)连接的下行设备的连接。

系统管理器可以使用寄存器接口来配置上行和下行通道以在主机设备(例如,上行设备302和/或任何中间重定时器304、306)与下行连接设备(308)之间建立不对称链路接口。系统管理器可以使用由下行连接设备308公告的寄存器信息来确定下行连接设备是否包括可以处理上行或下行业务的附加通道的接口端口。同样地,系统管理器可以使用来自重定时器的寄存器信息来确定任何中间重定时器304、306是否可以支持多于标准数量的上行链路或下行链路通道。上行组件302的上行端口310还应被配置为支持多个上行和/或下行通道以支持不对称接口。如果所有组件都包括可以支持非对称接口的端口,则系统管理器可以将端口和相对应的通道配置为非对称配置(例如,通过上行组件302上的寄存器接口、下行组件308和任何中间重定时器304、306)。

图4a是根据本公开的实施例的示例多通道互连架构400的示意图。认为本文描述的系统和方法可以应用于任何数量的总通道或切换通道。图4a和图4b示出了具有一个切换通道的四个通道,用于说明目的。多通道互连架构400可以包括上行组件402。上行组件402可以类似于图3的上行组件302。上行组件402可以包括第一下行端口412和第一上行端口414。多通道互连架构400还可以包括下行组件404。下行组件404可以类似于下行组件308。下行组件404可以包括第二下行端口416和第二上行端口418。第一下行端口412可以通过包括通道0和通道1的下行链路耦合到第二下行端口416。第一上行端口414可以由包括通道2和通道3的上行链路耦合到第二上行端口418。

第一下行端口412、第一上行端口414、第二下行端口416端口和第二上行端口418可以包括可以支持业务方向上的切换的逻辑电路和软件。

例如,上行组件402可以包括控制器450,控制器450包括以硬件或软件中的一个或两个中实现的逻辑,用于切换多通道互连架构400的一个或多个通道的方向。控制器450还可以控制一个或多个端口,以适应数据业务的增加(或减少)。下行组件404还可以包括控制器460,其可以类似于控制器450,所述控制器450包括以硬件或软件中的一个或两个中实现的逻辑。控制器460可以控制下行组件404中的一个或多个端口以适应通过相应端口的数据业务的增加或减少。

控制器450可以是或可以包括系统管理器。系统管理器可以是例如cio连接管理器、pcie连接管理器或用于管理多通道互连架构的链路方向的其他类型的系统管理软件。系统管理软件可以使用一个或多个参数来确定端口可以适应进入或离开端口的数据业务的增加。系统管理器可以使用寄存器设置或能力公告来确定上行组件402和下行组件404(以及任何中间重定时器)都支持线路方向的改变。例如,系统管理器可以在上行组件402和/或下行组件404中设置寄存器,以使每个组件识别线路方向的变化。系统管理器还可以确定相应的端口是否可以适应业务的增加。例如,专用下行端口可能无法容纳任何上行业务。系统管理器可以在执行任何动态线路方向切换之前确定端口是否可以容纳线路方向切换。

另外,系统管理器可以使用一个或多个参数来确定所连接的组件可以受益于非对称链路配置。在一些实施例中,系统管理器可以使用带宽拓扑信息来动态地调整多个上行和/或下行线路以适应将使用多种类型的线路(例如,上行与下行)的连接设备的业务流。例如,监视器可以使用的下行线路比上行线路更多,而存储设备或视频摄像机可以使用的上行线路比下行线路更多。如果线路上的带宽可用,则系统管理器可以切换多通道链路的一条或多条线路的方向以建立非对称接口。

下行线路可以指将第一设备处的tx逻辑与第二设备处的rx逻辑耦合的传输路径。上行线路可以指将第一设备处的rx逻辑与第二设备处的tx逻辑耦合的接收路径。

多通道链路架构400示出了两个系统之间的示例接口:上行组件402和下行组件404。该接口包括四个通道:通道0422、通道1424、通道2426和通道3428。图4b是根据本公开的实施例的示例线路方向切换的示意图。在图4a和图4b中示出的示例场景中,多通道链路在对称模式到非对称模式之间动态切换(其中,通道0422、通道1424和通道3428保持不变,但是通道2426使用两个下行线路,由两个箭头指示从上行组件402到下行组件404)。

图5a是根据本公开的实施例的示例对称链路拓扑500的示意图。对称链路拓扑500可以包括第一组件502和第二组件504。为了便于公开,第一组件502可以是上行组件,例如图3a-图3b的组件302;第二组件504可以是下行组件,例如组件404。然而,应理解,第一组件可以是下行组件,而第二组件可以是上行组件,而不偏离本公开的范围。

第一组件502可以通过多个通道(例如,通道0510、通道1511、通道2512和通道3513)链接到到第二组件504。多通道链路的每个通道可以包括tx线和rx线。例如,通道0510包括tx线510a和rx线510b。在一些实施例中,备用通道通道s515可用于扩展多通道链路的带宽。图5a中所示的配置是具有4(+1个备用)tx线和4(+1个备用)rx线的默认通道配置。对于多通道链路基于pcie协议的实施例,图5a中的链路将是x4链路。在此示例中,x4pcielink将具有4个上行和4个下行通道。

对于pcie多通道链路,组件可以将用于改变通道方向性的能力公告为每个组件(包括重定时器)的每个通道中的可选功能。更具体地,第一组件502和第二组件504可以公告信道内的一个或多个tx信道或线是否可以充当rx线以及一个或多个rx线是否可以充当tx线。基于组件指示的能力,取决于使用要求,不同的链路宽度排列是可能的。例如,取决于工作负载,多通道链路可以被配置为2个通道下行和8个通道上行或8个通道下行和2个通道上行。通道之间的其他排列是允许的:(下行通道,上行通道):(1,9)、(9,1)、(3,7)、(7,3)、(4,6)、(6,4)、(5,5)。没有备用通道,x4链路可以在(下行,上行)通道之间具有以下排列:(4,4)、(1,7)、(7,1)、(3,5)、(5,3)、(2,6)、(6,2)。尽管为了简单起见,仍然保持每个方向上的至少一个通道,以便于传递信用、响应、事务的ack/nack等。然而,在实施例中,单个通道可以通过对通道的时间复用使用来双向使用。

图5b是根据本公开的实施例的示例非对称链路拓扑550的示意图。图5b的非对称链路拓扑550包括:两个通道(通道0510和通道1511),其与默认设置相同。非对称链路拓扑550包括另外的rx线。代替包括一条tx线和一条rx线的通道2522,通道2522现在包括两条rx线(rx线522a和rx线522b)。同样,通道3523包括两条rx线523a和523b,并且备用通道通道s525包括两条rx线525a和525b。

在图5b的示例中,第二组件可以是使用上行带宽比下行带宽更多的下行组件。使用更多上行带宽的下行设备的示例可以包括存储器设备或视频摄像机。

图5c是根据本公开的实施例的示例非对称链路拓扑560的示意图。图5c的非对称链路拓扑560包括两个通道(通道0510和通道1511),其与默认设置相同。非对称链路拓扑560包括附加的tx线。通道2532现在包括两条tx线532a和532b。同样地,通道3533包括两条tx线533a和533b,并且备用通道通道s535包括两个tx535a和535b。

在图5c的示例中,第二组件可以是使用下行带宽比上行带宽更多的下行组件。使用下行带宽比上行带宽更多的下行设备的示例可以包括显示设备。

图6是根据本公开的实施例的示出了通道宽度可变性的排列的可变链路宽度拓扑600的示意图。每个通道可以独立地公告其改变方向的能力(例如,在链路训练阶段,下面讨论)。表1总结了基于每个通道上每个组件的能力,如图6所示。主机和连接设备中的每一个应支持要改变的通道方向的链路宽度可变性。

拓扑600示出了耦合到第二组件604的第一组件602。第一组件可以是表1中描述的主机设备;而第二组件可以是表1的连接设备。如图6所示,多通道链路是包括4个通道的x4链路:通道0610、通道1611、通道2612和通道3613。

对于通道0610,第一组件包括支持完整tx-rx线路切换的硬件电路(例如,可以切换tx和rx线路)。然而,第二组件不支持在通道0610处的通道切换。因此,通道0610不支持链路宽度可变性。

对于通道1611,第一组件支持使用rx作为tx,但是第二组件仅支持使用rx作为tx。简而言之,第一组件602和第二组件604都支持使用rx线作为tx线,但是都不支持使用tx线作为rx线。如果没有附加的rx线,组件将无法通过增加tx线来处理附加的接收。因此,在通道1611处不支持链路宽度可变性。

对于通道2612,第一组件支持使用rx作为tx,并且第二组件支持使用tx作为rx。因此,链路宽度可变性在下行(主机->连接设备)方向上由通道2612支持。附加通道由图6中的虚线箭头表示。

对于通道3613,第一和第二组件各自支持全链路宽度可变性。因此,第一和第二组件中的每一个可以处理附加的tx线或附加的rx线。附加的通道在图6中用虚线箭头表示。

表1.通道宽度可变性的排列

结果,通道2612可以形成从主机602到设备604的附加下行(tx)线612a。如图6所示,主机602可以包括硬件电路和附带的软件和/或固件,以支持附加的下行线路612a。主机可以包括至少部分地以硬件电路实现的第一发射器电路元件622(在链路训练的通道号分配阶段期间标记为t2)。发射器电路元件622可以包括将多通道链路的物理线路与主机电路电连接的引脚。主机602还可以包括至少部分地以硬件电路实现的接收器电路元件624(如果使用接收线,则可以在链路训练的通道号分配期间将其标记为r2)。主机602还可以包括至少部分地以硬件电路实现的第四发射器电路元件624(并且如果要使用第二下行线路612a,则在链路训练的通道号分配阶段期间标记为t4)。公共引脚可用于将器件604与接收器电路元件624和/或第二发射器电路元件626连接。其他命名约定和顺序是可能的并且与本公开的范围一致。

连接设备604同样可以包括附加电路以促进链路宽度扩展。例如,连接设备604可以包括硬件电路和附带的软件和/或固件,以支持附加的下行线路612a。设备604可以包括至少部分地以硬件电路实现的第一接收器电路元件632(在链路训练的通道号分配阶段期间标记为r2)。接收器电路元件632可以包括将多通道链路的物理线路与主机电路电连接的引脚。设备604还可以包括至少部分地以硬件电路实现的第一发射器电路元件634(如果在l2612上使用上行线路,则可以在链路训练的通道号分配期间将其标记为t2)。设备604还可以包括至少部分地以硬件电路实现的第四接收器电路元件634(并且如果要使用第二下行线路612a,则在链路训练的通道号分配阶段期间标记为r4)。公共引脚可用于将主机602与接收器电路元件634和/或第二发射器电路元件636连接。其他命名约定和顺序是可能的并且与本公开的范围一致。

通道3613可以在每个方向上包括附加通道(下行线路613a或上行线路613b)。如图6所示,主机602可以包括硬件电路和附带的软件和/或固件,以支持附加下行线路613a和附加上行线路613b。主机602可以包括至少部分地以硬件电路实现的第三发射器电路元件642(在链路训练的通道号分配阶段期间标记为t3)。主机602还可以包括至少部分地以硬件电路实现的第三接收器电路元件644(如果使用上行线路,则在链路训练的通道号分配期间可以标记为r3)。

主机602还可以包括至少部分地以硬件电路实现的第五接收器电路元件646(并且如果要使用第二上行线路613a,则在链路训练的通道号分配阶段期间标记为r5)。公共引脚可用于将器件604与第三发射器电路元件642和/或第五接收器电路元件646连接。主机602还可包括至少部分地以硬件电路实现的第六发射器电路元件648(并且如果要使用第二下行线路613b,则在链路训练的通道号分配阶段期间标记为t6)。公共引脚可用于将设备604与第三接收器电路元件644和/或第六发射器电路元件648连接。其他命名约定和顺序是可能的并且与本公开的范围一致。

连接设备604同样可以包括附加电路以促进链路宽度扩展。例如,连接设备604可以包括硬件电路和附带的软件和/或固件,以支持附加的下行线路613a或613b。设备604可以包括至少部分地以硬件电路实现的第三接收器电路元件652(如果在l3613上使用下行线路,则在链路训练的通道号分配阶段期间标记为r3)。设备604还可以包括至少部分地以硬件电路实现的第三发射器电路元件654(如果在l3613上使用上行线路,则可以在链路训练的通道号分配期间标记为t3)。设备604还可以包括至少部分地以硬件电路实现的第五发射器电路元件656(并且如果要使用第二上行线路613a,则在链路训练的通道号分配阶段期间标记为t5)。公共引脚可用于将主机602与第三接收器电路元件652或第五发射器电路元件656连接。器件604还可包括至少部分地以硬件电路实现的第六接收器电路元件658(并如果要使用第二下行线路613b,则在链路训练的通道号分配阶段期间标记为r6)。公共引脚可用于将主机602与第三发射器电路元件654或第六接收器电路元件658连接。其他命名约定和顺序是可能的并且与本公开的范围一致。

如本文所述,可在主机或连接设备中使用以扩展链路宽度的硬件电路可包括一个或多个缓冲存储器元件(也称为逻辑堆栈)。图7a-图7b是根据本公开的实施例的用于扩展多通道链路的链路宽度的示例逻辑堆栈实现的示意图。

图7a是根据本公开的实施例的驻留在主机设备702并支持扩展链路宽度的示例公共逻辑堆栈704的示意图700。在每个方向上的带宽可变的情况下,使用公共堆栈704可能是有益的。公共堆栈704可用于处理每个方向的最宽可能链路。在这种情况下,实现应该使所有虚拟通道映射到最宽的方向以模仿单个链路。在一些实施例中,内部堆栈可能具有处理潜在带宽加倍的挑战。例如,在每个方向上最多可处理16个通道的pcie链路将无法提供32个通道的带宽。在这些情况下,可以选择实现多个逻辑堆栈。图7b是根据本公开的实施例的实现多个逻辑堆栈754和756的示例主机752的示意图750。例如,如果x16pcie链路有效地变为x32,则主机752可以使用两个不同的x16堆栈754和756。窄部分(tx)可以在两个堆栈之间共享/复用以用于传递信用。

图8是根据本公开的实施例的用于在多通道链路中动态地协商非对称链路宽度的过程流程图800。首先,主机设备可以检测下行连接设备的存在(802)。作为链路建立的一部分,主机设备可以发起链路训练过程以训练将主机互连到下行设备的多通道链路(804)。主机可以针对通道宽度可变性来检测下行连接设备的能力(806)。当链路训练时会发生非对称链路能力协商。例如,在pcie中,当链路以2.5g的速率训练到l0时,每一方基于每个通道公告不对称能力,包括备用通道、备用协议、在配置周期期间的eq绕过。可以在常规通道中的“备用协议细节”字段(16位)下的修改的ts1/ts2有序集中公告每通道不对称能力。也可以使用ts1/ts2os的其他位字段。以下编码可用于指示基于每个通道的不对称支持:00:无不对称支持,01:仅tx可以变为rx,10:仅rx可以变为tx,11:tx可以是rx和rx可以是tx。可以期望重定时器覆写这些位以反映其与其他方支持的任何内容相组合的该通道上的能力。例如,如果设备在其能力中公告“11”(即,tx可以是rx,反之亦然),但重定时器仅支持其tx在该通道(01)上为rx,则重定时器将该字段修改为01b。

主机设备可以使用链路训练来确定要配置多少个附加上行或下行端口(808)。例如,主机可以使用带宽信息来确定互连可以在任一方向上支持增加数量的通道。

主机可以在链路训练期间执行通道的通道号分配(810)。图6中示出了通道号方案的示例。如果存在备用通道,如果下行端口可以在这些通道上驱动,则下行端口(dsp)可以为备用通道分配通道号。上行端口(usp)可以在驱动时使用增量。例如,在带有2个备用通道的x4链路中,dsp将使用通道号4、5、6、7用于备用通道,如果usp驱动,它将使用相同的号。无法通过dsp驱动的通道,usp必须提供与tx线号的其余部分一致的通道和线路号。

通道可以经历均衡(812)。对包括备用通道的所有可能的tx/rx对执行均衡。假设通道0不改变方向(即使它有能力)。在链路训练的阶段2(usp请求dsp调整其针对rx建立的tx设置),dsp到usp方向的最宽可能链路宽度将被均衡,并且附加通道的后向信道将从可以在针对不同通道的请求之间进行时间复用的通道0传递。在阶段3期间,发生反向。一些通道可以在不同(tx,rx)对之间均衡两次或三次但相反的方向。因此,在图6中,对于每个数据速率,链路均衡(eq)可以发生三次:针对默认通道配置的第一均衡;仅针对所有附加上行线路的第二均衡;以及仅针对所有下行线路的第三均衡。

在阶段2(3)的开始处,改变方向的通道将被允许一段电气空转以允许方向上的改变。在eq结束处,在进入恢复状态时,链路将返回其所需的设置,并在短暂的电气空闲状态下允许在某些通道上进行方向更改(如果需要)。如果通道0也需要支持反转方向,则可以进行另一轮均衡以使用另一通道在通道0的反向方向上均衡以执行反向通道均衡。

在链路操作期间的任何时刻,链路宽度可以由主机或设备通过寄存器设置指示来调整(816)。当链路需要在任何方向上更改宽度时,它会通过移动到配置状态以进行重配置来这样做。交换每个方向上所需的宽度并确定宽度。这可以由系统软件写配置寄存器来指定,以改变硬件遵循的每个方向上的期望宽度。它也可以由硬件基于每个方向上的预计带宽需求自主地完成,遵循预定算法(例如,dsp可以取决于其需要以及usp的带宽需求以成比例的方式决定宽度。)。在实施例中,链路可以经历先前描述的链路训练过程(818);然后可以初始化多通道链路(例如,在默认状态下)(814)。

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

参考图9,示出了由互连一组组件的点对点链路组成的结构的实施例。系统900包括耦合到控制器集线器915的处理器905和系统存储器910。处理器905包括诸如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器之类的任何处理元件。处理器905通过前端总线(fsb)906耦合到控制器集线器915。在一个实施例中,fsb906是如下所述的串行点对点互连。在另一个实施例中,链路906包括符合不同互连标准的串行、差分互连架构。

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

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

本文中,控制器集线器915通过串行链路919耦合到交换机/桥接器920。也可以被称为接口/端口917和921的输入/输出模块917和921包括/实现分层协议栈以提供控制器集线器915和交换机920之间的通信。在一个实施例中,多个设备能够耦合到交换机920。

交换机/桥接器920将来自设备925的分组/消息向上行(即向上层级朝向根复合体)路由到控制器集线器915并且向下行(即,向下层级远离根控制器)从处理器905或系统存储器910路由到设备925。在一个实施例中,交换机920被称为多个虚拟pci到pci桥接设备的逻辑组件。设备925包括要耦合到电子系统的任何内部或外部设备或组件,所述内部或外部设备或组件诸如i/o设备、网络接口控制器(nic)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、cd/dvdrom、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(usb)设备、扫描仪和其他输入/输出设备。通常在pcie本地语中,例如设备,被称为端点。尽管没有具体示出,但是设备925可以包括pcie到pci/pci-x桥以支持传统或其他版本的pci设备。pcie中的端点设备通常被分类为传统、pcie或根复合体集成端点。

图形加速器930也通过串行链路932耦合到控制器集线器915。在一个实施例中,图形加速器930耦合到与ich耦合的mch。交换机920以及相应的i/o设备925然后被耦合到ich。i/o模块931和918还实现分层协议栈以在图形加速器930和控制器集线器915之间通信。类似于上面的mch讨论,图形控制器或图形加速器930本身可以集成在处理器905中。

转到图10,示出了分层协议栈的实施例。分层协议栈1000包括任何形式的分层通信栈,诸如快速路径互连(qpi)栈、pcie栈、下一代高性能计算互连栈或其他分层栈。尽管下面的讨论与pcie栈有关,但是可以将相同的概念应用于其他互连栈。在一个实施例中,协议栈1000是包括事务层1005、链路层1010和物理层1020的pcie协议栈。诸如图9中的接口917、918、921、922、926和931之类的接口可以表示为通信协议栈1000。作为通信协议栈的表示也可以被称为实现/包括协议栈的模块或接口。

快速pci使用分组来在组件之间传送信息。分组在事务层1005和数据链路层1010中形成以将信息从发送组件传送到接收组件。当发送的分组流过其他层时,它们被扩展有用于处理这些层上的数据分组所需的附加信息。在接收侧,发生反向过程,并且分组从其物理层1020表示转换为数据链路层1010表示,并且最后(针对事务层分组)转换为可以由接收设备的事务层1005处理的形式。

事务层

在一个实施例中,事务层1005将提供设备的处理核与互连架构(例如数据链路层1010和物理层1020)之间的接口。就此而言,事务层1005的主要职责是分组(即事务层数据分组或tlp)的组装和拆装。转换层1005通常管理针对tlp的信用基础流控制。pcie实现划分事务,即具有按时间分隔的请求和响应的事务,允许链路承载其他业务,同时目标设备收集用于响应的数据。

另外,pcie使用基于信用的流控制。在该方案中,设备公告事务层1005中的针对接收缓冲器中的每个的初始信用量。链路相对端处的外部设备,例如图1中的控制器集线器115,对由每个tlp消耗的信用数量进行计数。如果事务不超过信用额度,则事务可以被发送。一旦收到回复,信用额度就会恢复。信用方案的优点是信用回报的延迟不影响性能,只要没有遭遇信用限额。

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

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

快速参考图11,示出了pcie事务描述符的实施例。在一个实施例中,事务描述符1100是用于承载事务信息的机制。就此而言,事务描述符1100支持在系统中对事务的识别。其他潜在用途包括跟踪对默认事务排序的修改以及事务与通道的关联。

事务描述符1100包括全局标识符字段1102、属性字段1104和通道标识符字段1106。在所示示例中,全局标识符字段1102被描绘为包括本地事务标识符字段1108和源标识符字段1110。在一个实施例中,全局事务标识符1102对于所有未完成的请求是唯一的。

根据一个实现方式,本地事务标识符字段1108是由请求代理生成的字段,并且对于需要针对该请求代理完成的所有未完成的请求,该字段是唯一的。此外,在这个示例中,源标识符1110唯一地标识pcie层级结构内的请求者代理。相应地,与源id1110一起,本地事务标识符1108字段提供层级域内的事务的全局标识。

属性字段1104指定事务的特征和关系。就此而言,属性字段1104可能用于提供允许事务的默认处理的修改的附加信息。在一个实施例中,属性字段1104包括优先级字段1112、保留字段1114、排序字段1116和无窥探字段1118。本文中,优先级子字段1112可以由发起者修改以向事务分配优先级。保留的属性字段1114被保留用于未来或供应商定义的使用。使用优先级或安全属性的可能的使用模型可以使用保留的属性字段来实现。

在该示例中,排序属性字段1116用于供应传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示将应用默认排序规则,其中排序属性“1”表示宽松排序,其中写可以以相同的方向传递写,并且读完成可以以相同的方向传递写。窥探属性字段1118用于确定是否窥探事务。如图所示,通道id字段1106标识事务与其相关联的通道。

链路层

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

物理层

在一个实施例中,物理层1020包括逻辑子块1021和电气子块1022以物理地将分组发送到外部设备。本文中,逻辑子块1021负责物理层1021的“数字”功能。就此而言,逻辑子块包括发送部分,其用于准备用于由物理子块1022发送的输出信息,以及接收部分,其用于在将接收到的信息传递给链路层1010之前识别并准备接收到的信息。

物理块1022包括发射机和接收机。发射机由逻辑子块1021供应符号,发射机将符号串行化并发送到外部设备。接收机被供应来外部设备的串行化的符号,并且将接收到的信号转换为位流。位流被解串行化并供应给逻辑子块1021。在一个实施例中,使用8b/10b传输码,其中发送/接收10位符号。本文中,使用特殊符号来对具有帧1023的分组进行组帧。另外,在一个示例中,接收机还提供从输入串行流恢复的符号时钟。

如上所述,尽管参照pcie协议栈的特定实施例讨论了事务层1005、链路层1010和物理层1020,但是分层协议栈并不限于此。实际上,可以包括/实现任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体的示例,使用通用标准接口(csi)分层协议。

转到图14,示出了由包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图,其中互连中的一个或多个实现了根据本发明的一个实施例的一个或多个特征。系统1200包括组件(例如,处理器1202),其使用包括以下逻辑的执行单元,所述逻辑用于根据本发明诸如在本文描述的实施例中执行用于处理数据的算法。系统1200表示基于可从加利福尼亚州圣克拉拉的英特尔公司获得的pentiumiiitm、pentium4tm、xeontm、itanium、xscaletm和/或strongarmtm微处理器的处理系统,但是其他系统(包括具有其他微处理器、工程工作站、机顶盒等的pc)也可以使用。在一个实施例中,样本系统1200执行可从华盛顿州雷蒙德市的微软公司获得的windowstm操作系统的版本,但是也可以使用其他操作系统(例如unix和linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。

实施例不限于计算机系统。本发明的替代实施例可以用在诸如手持设备和嵌入式应用之类的其他设备中。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(pda)和手持式pc。嵌入式应用可以包括微控制器、数字信号处理器(dsp)、片上系统、网络计算机(netpc)、机顶盒、网络集线器、广域网(wan)交换机或可执行根据至少一个实施例的一个或多个指令的任何其他系统。

本文所示出的实施例中,处理器1202包括用于实现执行至少一个指令的算法的一个或多个执行单元1208。一个实施例可以在单个处理器桌面型计算机或服务器系统的上下文中被描述,但是替代实施例可以被包括在多处理器系统中。系统1200是“集线器”系统架构的示例。计算机系统1200包括用于处理数据信号的处理器1202。作为一个示出性示例,处理器1202包括复杂指令集计算机(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、实现指令集组合的处理器、或者任何其他处理器设备,例如数字信号处理器。处理器1202耦合到处理器总线1210,处理器总线1210在处理器1202与系统1200中的其它组件之间发送数据信号。系统1200的元件(例如图形加速器1212、存储器控制器集线器1216、存储器1220、i/o控制器集线器1224、无线收发机1226、闪存bios1228、网络控制器1234、音频控制器1236、串行扩展端口1238、i/o控制器1240等)执行本领域技术人员公知的常规功能。

在一个实施例中,处理器1202包括一级(li)内部高速缓冲存储器1204。取决于架构,处理器1202可具有单个内部高速缓存或多级内部高速缓存。其他实施例包括取决于具体实现和需要的内部和外部高速缓存的组合。寄存器文件1206用于在各种寄存器中存储不同类型的数据,所述各种寄存器包括整数寄存器、浮点寄存器、矢量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。

包括用于执行整数和浮点操作的逻辑的执行单元1208也驻留在处理器1202中。在一个实施例中,处理器1202包括用于存储微代码的微代码(ucode)rom,所述微代码在执行时将执行用于某些宏指令的算法或处理复杂的场景。本文中,微代码可能是可更新的,以处理针对处理器1202的逻辑错误/修复。对于一个实施例,执行单元1208包括用于处理封装指令集1209的逻辑。通过将封装的指令集1209包括在通用处理器1202的指令集以及用于执行指令的相关联的电路中,许多多媒体应用所使用的操作可以使用通用处理器1202中的封装数据来执行。因此,通过使用处理器的数据总线的全部宽度以用于对封装数据执行操作,许多多媒体应用被加速并且更高效地执行。这可能消除了在处理器的数据总线上传输更小的数据单元以执行一个或多个操作的需要,一次一个数据元素。

执行单元1208的替代实施例也可以用在微控制器、嵌入式处理器、图形设备、dsp和其他类型的逻辑电路中。系统1200包括存储器1220。存储器1220包括动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备或其他存储设备。存储器1220存储将由处理器1202执行的数据信号所表示的指令和/或数据。

注意,本发明的上述特征或方面中的任何一个可以用在图12中所示的一个或多个互连上。例如,未示出的用于耦合处理器1202的内部单元的管芯上互连(odi)实现了上述本发明的一个或多个方面。或者,本发明与处理器总线1210(例如,英特尔快速路径互连(qpi)或其他已知的高性能计算互连)、到存储器1220的高带宽存储器路径1218、到图形加速器1212的点对点链路(例如,快速外围组件互连(pcie)兼容结构)、控制器集线器互连1222、i/o或用于耦合其他所示的组件的其他互连(例如,usb、pci、pcie)相关联。这些组件的一些示例包括音频控制器1236、固件集线器(闪速bios)1228、无线收发机1226、数据存储装置1224、包含用户输入和键盘接口1242的传统i/o控制器1210,诸如通用串行总线(usb)之类的串行扩展端口1238和网络控制器1234。数据存储设备1224可以包括硬盘驱动器、软盘驱动器、cd-rom设备、闪存设备或其他大容量存储设备。

现在参照图13,示出了根据本发明实施例的第二系统1300的框图。如图13所示,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个可以是某一版本的处理器。在一个实施例中,1352和1354是诸如英特尔的快速路径互连(qpi)架构之类的串行、点对点一致互连结构的一部分。结果,本发明可以在qpi架构内实现。

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

示出处理器1370和1380分别包括集成存储器控制器单元1372和1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(p-p)接口1376和1378;类似地,第二处理器1380包括p-p接口1386和1388。处理器1370、1380可以使用p-p接口电路1378、1388经由点对点(p-p)接口1350交换信息。如图13中所示,imc1372和1382将处理器耦合到各自的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是本地附接到各自处理器的主存储器的部分。

处理器1370、1380的每个使用点对点接口电路1376、1394、1386、1398经由单独的pp接口1352、1354与芯片组1390交换信息。芯片组1390还沿着高性能图形互连1339经由接口电路1392与高性能图形电路1338交换信息。

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

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

如图13所示,各种i/o设备1314连同将第一总线1316耦合到第二总线1320的总线桥1318一起耦合到第一总线1316。在一个实施例中,第二总线1320包括低引脚数(lpc)总线。在一个实施例中,各种设备耦合到第二总线1320,所述各种设备包括例如键盘和/或鼠标1322、通信设备1327和存储单元1328(例如通常包括指令/代码和数据1330的磁盘驱动器或其他大容量存储设备)。此外,音频i/o1324被示出为耦合到第二总线1320。注意,其他架构是可能的,其中所包括的组件和互连架构有所不同。例如,代替图13的点对点架构,系统可以实现多分支总线或其他这样的架构。

前面的公开已经呈现了多个示例测试链路状态,其可以补充在互连协议中定义的标准链路状态。应当意识到,除了上面标识的那些之外,可以提供其他测试链路状态,而不脱离本公开内容中包含的更一般化的原理。例如,虽然参考基于pcie或pcie的协议描述了本文讨论的示例状态机和有序序列中的一些,但是应当意识到,可以对其他互连协议进行类似的、相对应的增强,所述其他互连协议例如opencapitm、gen-ztm、upi、通用串行总线(usb)、用于加速器的高速缓存一致性互连(ccixtm)、advancedmicrodevicetm(amdtm)infinitytm、通用通信接口(cci)或qualcommtm的centriqtm互连等。

注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下图提供了用于利用如本文所述的本发明的示例性系统。由于更详细地描述了以下系统,因此从上面的讨论中公开、描述和重新考虑了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。例如,可以实现主机和设备,其配备有用于在各种计算架构中的任何一种中(例如,使用各种不同互连或结构中的任何一种)实现如以上示例中所讨论的认证和测量架构的功能。例如,主机可以连接到支持个人计算系统内的认证架构的设备(例如,在膝上型、桌面型计算机、移动设备、智能电话、物联网(iot)设备、智能设备、游戏控制台、媒体控制台等等中实现)。在另一示例中,主机可以连接到支持服务器计算系统内的认证架构的设备(例如,机架服务器、刀片服务器、塔式服务器、机架规模服务器架构或其他分解的服务器架构)以及其他示例。

系统、方法和装置可包括以下示例中的一个或组合:

示例1是一种用于配置多通道链路的装置,该装置包括端口,该端口包括用于支持多通道链路的硬件,该链路包括如下通道,所述通道包括第一差分信号对和第二差分信号对,其中,第一差分信号被初始地被配置为发送数据,而第二差分信号被初始地被配置为接收数据;以及链路配置逻辑,至少部分地以硬件电路实现,用于确定该端口包括硬件,所述硬件用于支持在第一差分信号对上接收数据或在第二差分信号对上发送数据中的一个或两个,并重新配置第一差分信号对以利用第二差分信号对接收数据,或者重新配置第二差分信号对对以利用第一差分信号对发送数据;并且其中端口用于基于第一差分信号对和第二差分信号对中的一个或两个的重新配置来发送数据和接收数据。

示例2可以包括示例1的主题,其中端口包括基于高速外围组件互连(pcie)的端口。

示例3可以包括示例1-2中任一项的主题,其中链路配置逻辑用于在操作的链路训练阶段期间接收公告,该公告指示该端口包括硬件,所述硬件用于支持在第一差分信号对上接收数据或在第二差分信号对上发送数据中的一个或两个。

示例4可以包括示例1-3中任一项的主题,其中链路配置逻辑用于执行针对第一和第二差分信号对的链路均衡。

示例5可以包括示例1-4中任一项的主题,其中该装置包括耦合到端口的缓冲存储器,以缓冲要在第一和第二差分信号对上发送的发送数据,或缓冲要在第一和第二差分信号对上接收的接收数据。

示例6可以包括示例5的主题,其中缓冲存储器包括用于第一和第二差分信号对中的每一个的公共堆栈。

示例7可以包括示例5的主题,其中缓冲存储器包括用于第一差分信号对的第一堆栈和用于第二差分信号对的第二堆栈。

示例8可以包括示例1-7中任一项的主题,其中端口包括硬件,所述硬件用于支持多个tx线和多个rx线,其中端口包括硬件,所述硬件用于在多个tx线的子集上接收数据和/或在多个rx线的子集上发送数据。

示例9可以包括示例8的主题,其中链路配置逻辑用于将通道号分配给多个tx线的子集或多个rx线的子集。

示例10可以包括示例1-9中任一项的主题,其中端口包括硬件,所述硬件用于在第一差分信号对上接收控制信令或在第二差分信号对上发送控制信令。

示例11可以包括示例1-10中任一项的主题,其中链路配置逻辑用于基于带宽利用信息来确定重新配置第一或第二差分信号对。

示例12是至少一个其上存储有指令的非暂时性机器可访问存储介质,该指令在机器上执行时使得机器用于检测跨链路的设备到主机设备的连接,其中该链路包括:第一信号信道,其被初始地被配置为从设备向主机设备发送数据;以及第二信号信道,其被初始地被配置为在设备处从主机设备接收数据;从设备接收能力公告,所述能力公告指示设备可以支持以下中的至少一个:第一信号信道用于接收数据的转换或者第二信号信道用于发送数据的转换;并执行通道配置以重新配置第一信号通道以接收数据或重新配置第二信号通道以发送数据;以及基于第一和第二信号信道中的一个或两个的重新配置,通过链路传送数据。

示例13可以包括示例12的主题,其中,指令在被执行时使机器对将主机连接到设备的一个或多个通道执行链路训练;在链路训练期间检测能力公告,所述能力公告指示该设备可以支持以下中的至少一个:第一信号信道用于接收数据的转换或者第二信号信道用于发送数据的转换;以及配置第一信号通道以接收数据或配置第二信号通道以发送数据;并在链路训练期间对通道执行均衡。

示例14可以包括示例13的主题,其中,指令在被执行时使机器使机器在完成链路训练之后进入活动状态功率管理(aspm)协议的l0状态。

示例15可以包括示例13的主题,其中,指令在被执行时使机器用于基于链路训练来确定设备的带宽利用能力;并且至少部分地基于带宽利用能力来将多通道链路被配置为不对称的。

示例16可以包括示例13的主题,其中,指令在被执行时使机器用于检测来自设备的用于将一个或多个通道返回到默认状态的指示;并重新配置链路以返回默认状态。

示例17是一种包括主机的系统,所述主机包括数据处理器、端口和系统管理器;以及跨多通道链路连接到主机的设备,该多通道链路包括通道,该通道包括第一差分信号对,其初始地被配置为在链路的第一通道内发送数据和第二差分信号对,其初始地被配置为在链路的第一通道内接收数据;其中系统管理器用于检测来自设备的能力公告,所述能力公告指示设备能够使用第一差分信号对来接收数据或使用第二差分信号对来发送数据;至少部分地基于能力公告来重新配置第一差分信号对以接收数据或重新配置第二差分信号对发送数据;并且在重新配置第二差分信号对之后,在第一和第二差分信号对上执行数据传输或者在重新配置第一差分信号对之后,在第一和第二差分信号对上执行数据接收。

示例18可以包括示例17的主题,其中端口包括基于快速外围组件互连(pcie)的端口。

示例19可以包括示例17-18中任一项的主题,其中系统管理器用于在操作的链路训练阶段期间接收公告,该公告指示该端口包括用于支持用于接收数据的第一差分信号对或用于发送数据的第二差分信号对的硬件。

示例20可包括示例17-19中任一示例的主题,其中系统管理器逻辑用于执行针对第一和第二差分信号对的链路均衡。

示例21可以包括示例17-20中任一项的主题,并且还可以包括耦合到端口的缓冲存储器,用于缓冲要在第一和第二差分信号对上发送的tx数据,或者用于缓冲在第一和第二差分信号对上接收的rx数据。

示例22可包括示例21的主题,其中缓冲存储器包括用于第一和第二差分信号对中的每一个的公共堆栈。

示例23可包括示例21的主题,其中缓冲存储器包括用于第一差分信号对的第一堆栈和用于第二差分信号对的第二堆栈。

示例24可以包括示例17-23中任一项的主题,其中系统管理器用于确定设备使用的下行带宽比上行带宽更多;配置第二差分信号对线以发送数据;并对第一和第二差分信号对执行数据传输。

示例25可以包括示例17-24中任一项的主题,其中系统管理器用于确定设备使用的上行带宽比下行带宽更多;配置第一差分对以接收数据;并对第一和第二差分对执行数据接收。

示例26是一种方法,包括检测跨链路的设备到主机设备的连接,其中该链路包括第一信号信道,其初始地被配置为从设备向主机设备发送数据和第二信号信道,其初始地被配置为在设备处从主机设备接收数据;从设备接收能力公告,所述能力公告指示设备可以支持以下中的至少一个:第一信号信道用于接收数据的转换或者第二信号信道用于发送数据的转换;并执行通道配置以重新配置第一信号通道以接收数据或重新配置第二信号通道以发送数据;基于第一和第二信号信道中的一个或两个的重新配置,通过链路传送数据。

示例27可以包括示例26的主题,还包括对将主机连接到设备的一个或多个通道执行链路训练;在链路训练期间检测能力公告,所述能力公告指示该设备可以支持以下中的至少一个:第一信号通道用于接收数据的转换或第二信号通道用于发送数据的转换;以及配置第一信号通道以接收数据或配置第二信号通道以传输数据;并在链路训练期间对通道执行均衡。

示例28可以包括示例27的主题,还包括在完成链路训练之后使机器进入活动状态功率管理(aspm)协议的l0状态。

示例29可以包括示例27的主题,还包括基于链路训练来确定设备的带宽利用能力;并且至少部分地基于带宽利用能力将多通道链路被配置为不对称的。

示例30可以包括示例27的主题,还包括检测来自设备的用于将一个或多个通道返回到默认状态的指示;并重新配置链路以返回到默认状态。

示例31是一种用于配置多通道链路的装置,该装置包括端口,该端口包括用于支持多通道链路的硬件,该链路包括通道,该通道包括第一差分信号对和第二差分信号对,其中,第一差分信号对初始地被配置为发送数据,并且第二差分信号对初始地被配置为接收数据;用于确定端口包括硬件的单元,所述硬件用于支持在第一差分信号对上接收数据或在第二差分信号对上发送数据中的一个或两个,以及用于重新配置第一差分信号对以用第二差分信号对接收数据或者重新配置第二差分信号对以利用第一差分信号对发送数据的单元;并且其中端口用于基于第一差分信号对和第二差分信号对中的一个或两个的重新配置来发送数据和接收数据。

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