多通道链路的部分链路宽度状态的制作方法

文档序号:25229761发布日期:2021-05-28 14:36阅读:53来源:国知局
多通道链路的部分链路宽度状态的制作方法

相关申请的交叉引用

根据35u.s.c.§119(e),本公开要求于2019年11月27日提交的、题为“powersavingsthroughasymmetricpartiallinkwidthstatesforcomputerbuses”的美国临时专利申请序列号62/941,277的权益,其全部内容通过引用并入本文。



背景技术:

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

设备可以跨各种数量的数据链路连接,每个数据链路包括多个数据通道。上游设备和下游设备在初始化时进行链路训练,以优化跨各种链路和通道的数据传输。

附图说明

图1示出了根据本公开的实施例的包括多核心处理器的计算系统的框图的实施例。

图2a-2b是根据本公开的实施例的包括一个或多个重定时器的示例链路的简化框图。

图3是示出根据本公开的实施例的包括部分l0(pl0)状态的示例链路训练状态机的示意图。

图4是根据本公开的实施例的链路管理数据链路层分组(dllp)的图,其示出了用于促进双向链路的在一个或多个方向上的部分链路宽度的示例编码。

图5a-5b是针对两个链路伙伴之间的部分链路宽度状态能力的协商的过程流程图。

图6a是针对向下配置双向多通道链路的过程流程图。

图6b是针对向上配置双向多通道链路的过程流程图。

图6c是根据本公开的实施例的针对将链路状态改变为部分链路宽度状态的过程流程图。

图7是示出根据本公开的实施例的用于协商链路宽度重新配置的各种实施例的泳道图。

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

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

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

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

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

图13示出了包括多个处理器插座的计算系统的框的实施例。

具体实施方式

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

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

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

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

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

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

如图1中示出的,物理处理器100包括两个核心——核心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,该解码模块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外部的计算系统中。在这种场景中,片上接口110用于与处理器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)后端,即,通常在该处进行分析、变换、优化和代码生成。一些编译器指代中间部分,其说明了编译器的前端与后端之间的界定的模糊处。因此,对编译器的插入、关联、生成或其他操作的引用可以在前述阶段或遍中的任何一个以及编译器的任何其他已知的阶段或遍中进行。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等,例如,在编译的前端阶段插入调用/操作,并且然后在变换阶段期间将调用/操作变换为较低级别的代码。注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,并且优化代码以用于在运行时期间执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已经编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。

以下详细描述参考附图。在不同附图中可以使用相同的附图标记来标识相同或类似的元素。在下面的描述中,出于解释而非限制的目的,阐述了具体细节(例如,特定的结构、架构、接口、技术等),以便提供对各种实施例的各种方面的透彻理解。然而,对于受益于本公开的本领域技术人员将显而易见的是,可以在脱离这些具体细节的其他示例中实践各种实施例的各个方面。在某些实例中,省略了对公知的设备、电路和方法的描述,以免以不必要的细节模糊对各种实施例的描述。

在互连链路的某些实现方式中,即使对于热设计电源使用情况,平均i/o链路利用可以常常小于50%。动态链路宽度(dlw)调整(也称为链路宽度向上配置/向下配置)可以使链路从l0状态到恢复状态到配置状态到l0。活动状态与非活动状态之间的这种转变可以花费几微秒(典型地在从高个位数到低两位数的情况下),从而导致该链路在非活动状态期间不可用于交换事务。与链路处于l0状态时相比,此延迟表示延迟增加了多个数量级。

本公开描述了系统、装置和方法,其允许链路被部分激活,并且允许在一些其他通道正在执行电空闲进入(链路宽度向下配置)或退出(链路宽度向上配置)时事务继续进行。此外,本文描述的技术和机制支持非对称链路宽度,从而在带宽需求非对称(例如,存储应用中更多的入站业务对出站业务)时实现功率节省。因此,因此该链路更好地实现功率高效的性能,而不会存在由于dlw机制中增加的延迟引起的传统的服务质量(qos)问题中的任一项从而导致用户无法利用功率节省。

在一些实施例中,本文描述的技术和机制在链路重新配置期间使链路保持活动。链路重新配置可以意味着增加链路宽度(链路向上配置或up-config)或减少链路宽度(链路向下配置或down-config),以及促进链路宽度的重新配置的链路训练和调度。即使在链路向上配置期间,由于基于调度机制和链路伙伴之间交换的消息传送,向上配置的通道与活动通道无缝合并,因此同时发生的链路业务也不会中断。

另外地,链路重新配置机制不会在转变到低功率链路状态或从低功率链路状态转变期间使业务停顿,这促进了积极部署。部分链路宽度状态通过针对减少的带宽从i/o使用中拿走功率(或匹配实际消耗带宽)来促进向其他实体(例如,核心)动态分配功率的能力。

本公开描述了一种用于在多通道的串行互连(例如,pcie或计算快速链路(cxl))中的功率节省的机制(如下面的图2a-b中示出的),该机制使得功耗能够与带宽消耗成比例,而不会导致链路中断时间。本公开描述了一种用于在串行互连(例如,pcie或cxl)中的功率节省的机制,该机制使得功耗能够与带宽消耗成比例,而不会导致链路中断时间。

图2a-2b是根据本公开的实施例的包括一个或多个重定时器的示例链路的简化框图。包含一个或多个重定时器的链路可以形成两个或更多个单独的电气子链路,这些子链路的数据速率与采用类似协议但不具有重定时器的链路所实现的数据速率相当。例如,包括单个重定时器的链路可以形成具有两个单独的子链路的链路,每个子链路以8.0gt/s或更高的速度操作。图2a-2b示出了包括一个或多个重定时器的示例链路的简化框图200a-200b。例如,在图2a中,将第一组件205(例如,诸如主机设备、cpu、根联合体、端口交换机等之类的上游组件)连接到第二组件210(例如,诸如i/o设备、外围设备、网卡、存储设备、加速器等之类的下游组件)的链路225可以包括单个重定时器215a。第一子链路220a可以将第一组件205连接到重定时器215a,并且第二子链路220b可以将重定时器215a连接到第二组件。

在一些实现方式中,诸如pcie兼容的链路之类的链路可以包括一个或多个重定时器或诸如转发器之类的其他扩展设备。重定时器设备(或简称为“重定时器”)可以包括有源电子设备,该有源电子设备接收并重传(重定时)数字i/o信号。重定时器可以用于扩展可以与数字i/o总线一起使用的信道的长度。重定时器可以是协议感知的、软件透明的,并且能够执行链路均衡化过程,例如,pcie的链路均衡化过程。

如图2b中示出的,可以利用多个重定时器245a、245b来扩展链路255。可以通过两个重定时器245a、245b来定义三个子链路250a-250c,其中第一子链路255a将第一组件235连接到第一重定时器245a,第二子链路250b将第一重定时器245a连接到第二重定时器245b,并且第三子链路255c将第二重定时器245b连接到第二组件240。

重定时器(缓冲器)设备的主要功能是信号重定时。这些功能由重定时器电路块506(针对每个方向一个块)执行,如所示的。特定的重定时器设备电路将取决于用于链路的phy。通常,重定时器电路被配置为恢复传入信号并且使用本地时钟和新的发送均衡化电路进行重传,并且可以典型地采用出于该目的的公知的电路,例如,锁相环。重定时器还可以包括发射机和接收机电路,该发射机和接收机电路包括一个或多个放大器电路,以及用于增加接收信号的驱动电平的各种类型的公知的信号调节电路。这种重定时器电路对于高速互连领域技术人员是公知的,并且因此本文没有示出或讨论进一步的细节。

每个重定时器215、245a、245b可以具有上游路径和下游路径。在一些实现方式中,重定时器可以包括两个伪端口,并且伪端口可以动态地确定其相应的下游/上游定向。此外,重定时器215、245a、245b可以支持包括转发模式和执行模式的操作模式。在某些实例中,重定时器215、245a、245b可以对在子链路上接收到的数据进行解码,并且对要在其另一子链路上向下游转发的数据进行重新编码。因此,重定时器可以捕获接收到的位流,之后重新生成位流并且将其重传到另一设备或甚至另一重定时器(或重驱动器或中继器)。在某些情况下,重定时器可以例如在处理并转发有序集合数据时修改其接收的数据中的某些值。另外地,重定时器可以潜在地支持任何宽度选项(例如,由诸如pcie之类的规范定义的宽度选项集合)作为其最大宽度。

随着串行互连(例如,pcie、upi、usb等)的数据速率增加,越来越多地使用重定时器来扩展信道范围。多个重定时器可以级联,以达到甚至更长的信道范围。可以预期,随着信号速度增加,通常情况下,信道范围将典型地减小。因此,随着互连技术加速,重定时器的使用可以变得更加常见。作为示例,随着采用16gt/s的pciegen-4来支持pciegen-3(8gt/s),pcie互连中重定时器的使用可能增加,随着速度增加,在其他互连中也可能出现这种情况。

在一种实现方式中,可以针对基于快速pcigen-4(16gt/s)的重定时器定义常见的bga(球栅阵列)封装。这样的设计至少可以解决常规pciegen-3(8gt/s)重定时器设备中发现的示例缺陷中的一些,以及采用pciegen-4时出现的问题中的一些。此外,对于pciegen-4,期望重定时器供应商的数量和容量增加。由于来自加倍的数据速率(从8gt/s到16gt/s)的信号损耗,在gen-4中可实现的互连长度显著降低。在这种和其他示例互连技术中,随着数据速率增加,重定时器可以由此具有增加的效用,因为重定时器可以用于显著地增加信道长度,该信道长度否则将受到增加的数据速率的限制。

尽管重定时器被示出为与上游组件和下游组件分离,但是重定时器可以是上游组件或下游组件的一部分、在上游组件或下游组件的板上或在下游组件的封装上。

在某些实例中,上游组件205和下游组件210可以直接连接,而在两个组件205、210之间的链路上不设置重定时器、重驱动器或转发器。在其他实例中,可以提供重定时器(例如,215)以扩展连接上游组件205和下游组件210的链路,例如图2a中示出的。在其他实现方式中,可以串联提供两个或更多个重定时器(例如,245a、245b)以进一步扩展连接上游组件235和下游组件240的链路。例如,特定的互连技术或协议可以指定最大信道长度,并且可以提供一个或多个重定时器(例如,245a、245b)来扩展连接两个设备235和240的信道的物理长度。例如,在上游组件235与下游组件240之间提供重定时器245a、245b可以允许链路的长度是针对没有这些重定时器(例如,245a、245b)的链路指定的最大长度的三倍,以及其他示例实现方式。

在实施例中,可以在诸如pcie之类的串行互连中实现用于功率节省的机制,这使得功耗能够与带宽消耗成比例,而不会导致链路中断时间。图2a-2b示出了可以实现本文描述的机制的典型的基于pcie的系统。上游组件205或235(例如,cpu)的下游端口(dsp)连接到下游组件210或240(例如,网卡、存储装置或加速器)的上游端口(usp),并且在一些实现方式中,通过一个或多个重定时器215、245a、245b来连接。usp和dsp控制链路宽度,并且重定时器遵循usp或dsp的领导。重定时器被配置为理解交换的令牌并理解通道如何改变。

转向图3的图300,示出了示例链路训练状态机,例如,pcie链路训练和状态状态机(ltssm)。图3是示出根据本公开的实施例的包括部分l0(pl0)状态的示例链路训练状态机300的示意图。对于利用根据特定协议的phy来支持多个替代协议(即,在phy之上运行)的系统,可以定义有序集,该有序集要在链路上的两个或多个设备之间与链路的训练相关地进行通信。例如,可以发送训练集(ts)有序集(os)。在利用pcie作为phy协议的实现方式中,ts有序集可以包括ts1和ts2有序集,以及其他示例有序集。在链路训练期间发送的有序集和训练序列可以基于特定的链路训练状态、利用各种链路训练状态来完成对应的链路训练活动和目标。

链路训练状态机300可以示出代表多通道链路(例如,基于pcie协议的多通道链路)的各种状态的链路训练和状态状态机(ltssm)。在一个示例中,例如图3中示出的,链路训练状态机300可以包括诸如复位状态、检测状态(例如,以检测远端终端(例如,连接到通道的另一设备))、轮询状态(例如,以建立符号锁定和配置通道极性)、配置(或“config”)状态(例如,以将到链路中的连接的物理通道配置为具有特定通道宽度、通道编号等,执行通道到通道抗扭斜和其他链路配置活动)、环回状态(例如,以执行测试、故障隔离、均衡化和其他任务)、恢复状态(例如,以用于改变操作的数据速率、重新建立位锁定、符号锁定或块对齐、执行通道到通道抗扭斜等)以及可用于使链路进入活动链路状态(例如,l0304)的其他状态之类的状态。ltssm300还示出了各种功率状态:完全活动状态(l0304)、电空闲或待机状态(l0s306)、l1(较低功率待机/休眠状态308)、l2(低功率睡眠状态310)和l3(链路关闭状态)。ltssm1300还示出了部分l0(pl0)状态302,其是本文描述的子状态。

在一个示例中,可以定义要在链路训练状态的特定一个(或多个)中发送的训练序列,以适应特定设备的所支持协议中的特定一个协议的协商。例如,特定训练状态可以是进入活动链路状态之前的训练状态,或者是其中数据速率可以被提升(例如,超出所支持的协议中的至少一个所支持的数据速率)的训练状态,例如,其中数据速率从gen1速度转变到gen3或更高速度的pcie状态,以及其他示例。例如,在图3中示出的示例实施方式中,可以利用并扩充配置状态(例如,312)以允许与在训练状态中本地定义的链路训练活动并行地协商多个协议中的特定一个协议(例如,通道宽度确定、通道编号、抗扭斜、均衡化等)。例如,可以针对训练状态定义特定的训练序列,并且可以扩充这些训练序列以允许信息(例如,在一个或多个字段中或有序集合的符号中)被通信、以标识链路上的每个设备是否支持多个协议(例如,除了物理层的协议栈之外的至少一个协议栈和对应的链路训练状态机)、标识每个设备支持的特定协议并且商定要在特定phy上采用的一个或多个协议(例如,通过跨链路(在上游方向和下游方向两者上)传输这些训练序列来完成的握手)。

在一个示例中,pcie物理层可以用于支持多个不同的协议。因此,pcieltssm中的特定训练状态可以用于链路上的设备之间的协议的协商。如上面所指出的,即使在链路以最低支持的数据速率(例如,pciegen1数据速率)训练到活动状态(例如,l0304)之前,也可以发生协议确定。在一个示例中,可以使用pcie配置状态。实际上,可以通过在链路宽度协商之后并且(至少部分地)与在配置状态期间执行的通道编号并行地使用修改后的pcie训练集(例如,ts1和ts2)来使用pcieltssm来协商协议。

为了支持本文描述的链路宽度调整机制,以本文称为l0p302的状态来扩充ltssm,如图3中示出的。当一个端口打算以比在任一方向上在l0处协商的最大配置的链路宽度更窄的宽度来操作链路时,从l0进入l0p状态302。虽然在这种新状态下,链路继续以与l0中相同的方式操作,但在至少一个方向上以更窄的宽度操作,而其余通道处于电空闲(ei),类似于l1308。如果存在仅与处于ei的通道相关联的(多个)pll(锁相环),则也可以将这些ppl关闭。当处于l0p302时,可以向ei添加更多通道,并且也可以打开处于ei的通道中的一些。如果链路在两个方向上都以最大配置的链路宽度操作,则ltssm进入状态l0304。如果链路向上配置工作在l0p中超时,则链路进入恢复状态,这将最终打开所有通道。每当链路进入恢复状态时,将对链路的(在任一方向上的)所有配置的通道进行重新训练,并且链路将以其完全配置的宽度进入l0状态304。

作为示例,双向多通道链路可以包括16个通道。在某个时候,4个通道(0–3)可以是活动的,而12个通道处于低功率或睡眠模式。如果系统希望唤醒4个附加的通道,则重新训练4个训练。然后,当通道0-3中断时,会向所有8个通道发送分组或令牌,以使所有8个通道以相同方式表现。8个通道也可以向下配置以返回到4个通道。

图4是根据本公开的实施例的链路管理数据链路层分组(dllp)的图,其示出了用于促进双向链路的一个或多个方向上的部分链路宽度的示例编码。可以通过dllp协商从l0或l0p的链路宽度向下配置,如图4中示出的。对于8b/10b和128b/130b编码,dllp作为单独的分组被定期发送。对于pcie6.0,dllp是每个flit的一部分,并且因此被更频繁地发送。建议的机制适用于所有编码。定义了特殊的链路管理dllp,其包括所有l0p相关的命令。l0p.cmd定义了各种l0p命令以及对应的响应,包括组件的能力(其是否支持l0p以及其是否支持通用的非对称l0p或其中两个方向都将尝试具有相同的宽度的对称l0p版本)。组件可以确认或否定确认l0p请求。针对在任一方向上的宽度(usp,dsp),提供两种编码。端口可以在任一方向上请求l0p。

图5a-5b是针对两个链路伙伴之间的部分链路宽度状态能力的协商的过程流程图。图5a-5b演示了如何在由双向多通道链路(例如,使用pcie协议的链路)互连的两个端口之间协商l0p能力。图5a是针对两个链路伙伴之间的l0p状态协商的过程流程图500。第一链路伙伴(例如,上游连接的设备的下游端口(dsp)或下游连接的设备的上游端口(usp))可以通过发送其支持l0p的查询向第二链路伙伴通告在l0p状态下操作的能力,这高效地通告其针对对称和/或非对称部分链路宽度的能力(502)。第一链路伙伴的通告可以在链路初始化期间执行一次,或者可以定期执行。第一链路伙伴可以与第二链路伙伴定期检查是否激活l0p状态能力。例如,由于各种原因,dsp或usp可能不希望立即启用l0p能力,但是可能希望在链路初始化之后或发生的事件之后立即启用l0p功能。第一链路伙伴可以发送具有支持l0p的编码的链路管理数据链路层分组(例如,l0p.cmddllp),以及对称或非对称(或两者)功能是否可用的指示。在一些实施例中,指示使用非对称部分链路宽度进行操作的能力的链路伙伴暗示该链路伙伴也可以使用对称部分链路宽度进行操作。因此,dllp可以通告仅对称能力或非对称能力,后者指示对称和非对称操作两者的能力。

在从第一链路伙伴接收到l0p查询之后,如果第二链路伙伴不支持(或不希望支持)l0p,则第二链路伙伴可以利用l0p请求否定确认进行响应(504)。如果第一链路伙伴接收到l0p否定确认,则在链路上未启用l0p(506)。l0p否定确认可以是具有l0p否定确认编码的dllp。

如果在预定时间量之后第一链路伙伴未收到确认/否定确认,则超时可以提示第一链路伙伴认为第二链路伙伴不希望启用l0p状态。然后,第一链路伙伴可以稍后定期重新发送l0p能力通告(508)。

如果第二链路伙伴支持l0p状态,则第二链路伙伴可以利用l0p请求确认来响应dsp的l0p请求通告,该通告可以利用支持l0p的编码在链路管理dllp(例如,l0p.cmddllp)中进行编码(508)。即,如果第一链路伙伴从第二链路伙伴接收到具有支持l0p的编码的dllp,则第一链路伙伴可以认为是对l0p请求的确认。支持l0p的编码还可以向第二链路伙伴通告第二链路伙伴是否支持对称或非对称部分链路宽度操作。

如果第一链路伙伴和第二链路伙伴两者都支持l0p,则第一链路伙伴将具有启用l0p的编码的dllp发送给第二链路伙伴(510)。更具体地,如果至少一方具有针对l0p的仅对称支持,则第一链路伙伴可以发送具有启用l0p:对称的dllp,或者如果双方支持非对称l0p,则dsp可以发送具有启用l0p:非对称的dllp。

第二链路伙伴可以将与第二链路伙伴收到的相同的dllp发送回第一链路伙伴(例如,针对每一个启用l0p:(非)对称的dllp的启用l0p:(非)对称等)(512)。在这里,术语(非)对称是针对表示非对称或对称的速记。在一些实施例中,第二链路伙伴针对第二链路伙伴接收的每一个发送回最多一个相同的启用l0p的编码的dllp。当第一链路伙伴从第二链路伙伴接收到具有启用l0p:(非)对称编码的dllp时,初始化过程完成,并且在链路中启用了l0p(514)。如果第一链路伙伴没有接收到具有启用l0p的编码的dllp,则第一链路伙伴可以等待或可以将具有启用l0p的编码的另一dllp发送给第二链路伙伴。

dsp或usp可以发起部分链路宽度协商。在实施例中,如果usp发送l0p查询并从dsp接收l0p查询,则usp利用确认/否定确认进行响应;而dsp将忽略从usp接收到的l0p查询。

图5b是根据本公开的实施例的针对部分链路宽度能力协商的过程流程图550。图550提供了用于启用两个链路伙伴之间的部分链路宽度的示例协商流程。在该示例过程流中,发送初始dllp来通告部分链路宽度能力的链路伙伴可以称为发起链路伙伴;在该示例中,响应初始通告的链路伙伴可以称为响应链路伙伴。

在链路训练期间或在预定时间间隔器件或在触发事件之后,链路伙伴可以期望从发起链路伙伴接收到具有支持l0p的编码的dllp。响应链路伙伴针对来自发起链路伙伴的具有支持l0p的编码(通告)的初始dllp等待预定时间量(552)。如果在从发起链路伙伴接收到支持l0p的请求之前用完了预定时间量(即,发生超时),则未启用部分链路宽度(570)。

如果响应链路伙伴确实从发起链路伙伴接收到支持l0p的编码的dllp(556),则然后响应伙伴可以向发起链路伙伴发送确认(ack)(558)。确认可以是具有支持l0p的编码的dllp,从而指定仅对称或非对称的部分链路宽度能力(558)。在一些实施例中,如果响应伙伴确定不启用部分链路宽度状态,则响应伙伴可以发送否定确认(nak)。否定确认可以是具有l0p否定确认编码的dllp。

响应伙伴可以等待预定时间量,以接收启用l0p的编码的dllp(560)。如果在从发起链路伙伴接收到启用l0p的dllp之前发生了超时,但是两个链路伙伴已经发送确认,则在由于错误而导致丢失启用l0p的dllp的情况下,响应伙伴可以激活部分链路宽度能力作为预防措施(568)。响应伙伴可以将错误消息报告给发起链路的伙伴、主机处理器或其他链路管理器,从而指示部分链路宽度状态协商,并且可以指示未接收到l0p启用的dllp(570)。然后,将认为链路上的部分链路宽度状态未在链路上启用。然后,发起链路伙伴可以在稍后的时间重试以启用部分链路宽度状态(例如,在错误处理之后或以预定的时间间隔或在触发事件之后)。如果在超时之后(566),部分链路宽度状态已经被启用,则链路可以保持在l0p状态而无需采取进一步的动作(564)。

如果响应链路伙伴接收到指示启用l0p状态的dllp(560),则响应链路伙伴可以向发起链路伙伴发送确认(562)。该确认可以是具有启用l0p的编码的dllp,类似于响应链路伙伴在(560)处接收到的具有启用l0p的编码的dllp。然后,认为l0p状态在链路上启用(564)。

发起链路伙伴可以是dsp或usp;并且响应链路伙伴可以是dsp或usp。

在进行初始协商以在两个链路伙伴之间的链路上启用部分链路宽度状态之后,链路伙伴可以然后对链路进行向上配置或向下配置。图6a–6c是针对端口可以如何重新配置链路的过程流程图。图6a是针对向下配置双向多通道链路的过程流程图600。处理流程图600适用于端口希望从l0进入l0p的情况,或者适用于端口处于l0p并且希望进一步向下配置链路的情况。过程流程图600提供了针对发起链路伙伴是dsp或usp的过程流程。

在602处,发起端口确定其希望在任一方向上对链路进行向下配置。打算在任何方向(即,发送方向或接收方向)上向下配置操作链路宽度的发起端口可以向响应端口发送消息以指示期望的链路宽度(604)。例如,发起端口可以向响应端口发送针对在每个方向上具有(多个)期望的宽度的具有l0p.cmd=“针对(非)对称链路宽度的l0p请求”的l0p链路管理dllp,并且等待响应(确认或否定确认)。

如果接收到l0p请求否定确认响应(624),则向下配置请求已经被响应端口拒绝,并且请求过程结束(628)。链路保持当前功率状态或(部分)链路宽度,或进入恢复状态。如果在链路宽度向下配置请求尚未完成的情况下,链路从l0进入恢复或低功率状态(626),则压制(squash)整个过程(628)。即使当链路处于l0p状态时,去往恢复状态的任何转变都将使链路在从恢复状态退出时返回到完全配置的宽度l0状态。

如果接收到l0p请求确认响应(612),则可以将链路重新配置为使用减少的链路宽度进行操作(610、612、614、616)。每个端口在下一个调度的skpos(skip有序集)之前等待。端口发送消息来调度改变(610)。例如,端口可以在当前数据流中在调度的skpos之前的flit中从下一个块编码发送具有l0p的l0p链路管理dllp。请注意,该flit不一定是skpos之前的最后一个flit。该端口在将保持活动状态的通道上发送skpos,并在将去往电空闲(ei)的通道上发送电空闲有序集(eios)(612)。然后,端口可以在活动通道上发送数据,并且在电空闲通道上发送eios(614)。因此,不存在链路向下配置链路宽度的中断时间。在链路以新的链路宽度操作之后,ltssm可以从l0p转变(如果lsttm之前处于l0)(616)。

两个端口都可以在尚未收到链路伙伴的请求的情况下独立地发送针对在每个方向上具有(多个)期望的宽度的具有l0p.cmd=“针对(非)对称链路宽度的l0p请求”的l0p链路管理dllp。在这种情况下,dsp的请求胜出,usp必须做出响应,而dsp会忽略usp的请求。在图6a中,该情况被示出如下:如果接收到l0p请求并且如果端口是usp(622),则usp发送l0p请求确认/否定确认以推迟到dsp或压制该请求(624)。如果端口是dsp(622),则该端口响应(604)处的原始请求而等待来自usp的l0p请求确认/否定确认(618),并从那里采取行动来开始重新配置链路、等待超时或压制请求(响应于接收到否定确认)。

图6b是针对向上配置双向多通道链路的过程流程图640。图6c是根据本公开的实施例的用于将链路状态改变为部分链路宽度状态的过程流程图670。一起描述图6b和图6c。在图6b-6c中,端口打算从l0p转变到l0、在l0p中进行向上配置,或者一个或多个空闲通道破坏l0p中的静噪(642)。任何链路伙伴都可以请求部分链路宽度向上配置,无论谁可以已经发起了向下配置请求。

对于非对称的部分链路宽度状态,过程流程640将发送侧与接收侧不同地对待。在tx侧:请求向上配置的发送机侧不需要使用dllp来发起向上配置过程。要被重新激活的通道经过恢复样式的握手(唤醒通道、获取位锁定、块对齐、稳定通道等),而正常业务流则继续在活动通道上进行。例如,发送机可以在要变为活动的tx空闲通道上发送训练序列1有序集(ts1os),并且每32个ts1os发送eieos(646)。活动通道在此期间继续发送数据块。发送机可以根据调度在所有活动通道和要变为活动的通道上发送如所调度的skpos(648)。在发送机收到指示完成了l0p向上配置的训练的l0pdllp(l0p.cmd=l0p向上配置的l0p训练完成)的指示之后(650),端口可以发送dllp,以调度下一个块中的l0p改变(l0p.cmd=“来自下一个块的l0p改变”)(652)。要被激活的通道被添加到一组已经激活的通道中,并且端口在所有活动通道上发送skpos,随后是数据流(654)。然后,tx握手完成(656)。

一旦重新激活的通道准备好被激活并与活动通道合并,端口将等待skpos边界,在当前活动的通道+要变为活动的通道上发送调度的skpos,随后在新的链路宽度上发送新数据流。预期到此时,接收机端口(和伪端口)已经跨所有通道(先前活动的通道+近期重新激活的通道)进行了抗扭斜。在训练过程期间,伪端口可以在skpos中利用一位请求扩展通道上的重新训练。完成后,如果链路在两个方向上都以最大配置宽度操作,则ltssm从l0p状态转变到l0。

在接收机侧:如果支持非对称链路宽度,则接收机可以通过发送在每个方向上具有(多个)期望的宽度的具有l0p.cmd=“针对(非)对称链路宽度的l0p请求”的l0p链路管理dllp来请求向上配置,并且等待确认(658)。接收机可以等待在需要变为活动的通道上接收预定数量的ts1os(例如,8个连续的ts1os),并且确认通道在块边界处与活动通道进行了抗扭斜(660)。接收机可以发送指示完成了向上配置训练(例如,l0p.cmd=l0p向上配置的训练完成)的l0pdllp(662)。如果接收机接收到指示要调度l0p改变的l0pdllp(例如,l0p.cmd=来自下一个块的l0p改变),则rx握手完成。如果接收机没有接收到该指示,则接收机可以在重新发送训练完成dllp(l0p.cmd=l0p向上配置的训练完成)(662)之前等待预定时间量(664)。预定时间量可以是例如自退出s1状态之后经过1μs。

在对称链路宽度中,任何一个端口都可以发起向上配置过程,而无需发送dllp。图7是示出根据本公开的实施例的用于协商链路宽度重新配置的各种实施例的泳道图700。由于链路伙伴否定确认请求,因此链路宽度向下配置的第一次尝试失败。由于链路在向下配置完成之前进入恢复状态,因此第二次尝试失败。第三次尝试成功:两侧几乎同时进行了请求。因此,dsp的针对向下配置为x4的请求被保留,其中usp进行了确认并且链路以x4宽度操作,而ltssm进入l0_l1p状态。此后,由usp发起的将链路变为x8的向上配置请求成功,并且链路以x8宽度结束,同时仍处于l0_l1p状态。

前两个示例702、704示出了不成功的链路宽度调整。首先,x16链路在l0中操作。在702中,dsp将pl0请求令牌发送到usp以从x16l0转变到x8pl0。usp以否定确认响应,这结束了请求。同样,在704中,dsp发送pl0请求令牌以从x16l0转变到x8pl0,但是usp进入恢复状态,这也终止了该请求。如果在链路宽度向下降配置请求尚未完成时,链路从l0进入恢复或低功率状态,则整个过程将被压制。

在706中,两个链路伙伴发送向下配置请求。两侧都可以在尚未接收到链路伙伴的令牌的情况下独立地发送pl0请求令牌。这里,dsp请求从x16l0到x4pl0的向下配置,而usp请求从x16l0到x2pl0的转变。dsp的请求胜出,并且usp必须做出响应(例如,此处usp以确认进行响应),而dsp则忽略了usp的请求。usp和dsp将各自从下一个块编码发送pl0,随后在上方12个通道上发送eios,在下方4个通道上发送控制或skpos,在通道4-15上发送ei,并且在通道0-3上发送数据流。

在708中,端口打算从x4pl0到x8pl0向上配置。两个端口均执行以下操作:

1)在通道4-7上发送eieos,随后在通道4-7上发送ts1以进行链路训练。在通道0-3上发送正常业务,并且在通道8-15(其保持空闲)上发送ei。

2)在通道4-7上发送ts2(具有eieos)以指示链路就绪,在通道0-3上发送正常业务,并且在通道8-15上发送ei。

3)在通道0-3上发送eds以表示该数据流的结尾。在通道4-7上发送ts2,在通道8-15上发送ei。

4)在所有活动通道0-7上发送skipos、sds和数据流,同时在通道8-15上继续发送ei。

参考图8,示出了由互连一组组件的点对点链路组成的结构的实施例。系统800包括与控制器中心815耦合的处理器805和系统存储器810。处理器805包括任何处理元件,例如,微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器805通过前端总线(fsb)806与控制器中心815耦合。在一个实施例中,fsb806是如下面所描述的串行点对点互连。在另一实施例中,链路806包括符合不同的互连标准的串行差分互连架构。

系统存储器810包括任何存储器设备,例如,随机存取存储器(ram)、非易失性(nv)存储器或可由系统800中的设备访问的其他存储器。系统存储器810通过存储器接口816与控制器中心815耦合。存储器接口的示例包括双倍数据速率(ddr)存储器接口、双通道ddr存储器接口和动态ram(dram)存储器接口。

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

这里,控制器中心815通过串行链路819与交换机/桥接器820耦合。输入/输出模块817和821(也可以称为接口/端口817和821)包括/实现分层协议栈以提供控制器中心815与交换机820之间的通信。在一个实施例中,多个设备能够耦合到交换机820。

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

图形加速器830也通过串行链路832与控制器中心815耦合。在一个实施例中,图形加速器830耦合到与ich耦合的mch。然后,将交换机820以及因此i/o设备825耦合到ich。i/o模块831和818还用于实现分层协议栈以在图形加速器830与控制器中心815之间进行通信。类似于上面关于mch的讨论,图形控制器或图形加速器830本身可以集成在处理器805中。

转到图9,示出了分层协议栈的实施例。分层协议栈900包括任何形式的分层通信栈,例如,快速路径互连(qpi)栈、pcie栈、下一代高性能计算互连栈或其他分层栈。尽管紧接着下面参考图8-11进行的讨论涉及pcie栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈900是pcie协议栈,其包括事务层905、链路层910和物理层920。接口(例如,图8中的接口817、818、821、822、826和831)可以表示为通信协议栈900。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

快速pci使用分组以在组件之间传送信息。在事务层905和数据链路层910中形成分组以将信息从发送组件运送到接收组件。当发送的分组流经其他层时,利用在这些层处处理分组所必需的附加信息来对发送的分组进行扩展。在接收侧,发生相反的过程,并且分组从其物理层920表示变换为数据链路层910表示,并且(针对事务层分组)最终变换为可以由接收设备的事务层905处理的形式。

事务层

在一个实施例中,事务层905用于提供设备的处理核心与互连架构(例如,数据链路层910和物理层920)之间的接口。就这一点而言,事务层905的主要责任是对分组(即,事务层分组或tlp)的组装和拆分。转换层905典型地管理针对tlp的基于信用的流控制。pcie实现分离事务,即,请求和响应按时间分离的事务,从而在目标设备收集针对响应的数据时允许链路运送其他业务。

此外,pcie利用基于信用的流控制。在该方案中,设备在事务层905中通告接收缓冲器中的每一个的初始信用量。在链路的相对端处的外部设备(例如,图8中的控制器中心815),对由每个tlp消耗的信用的数量进行计数。如果事务没有超过信用限制,则该事务可以被发送。在接收到响应后,将恢复信用量。信用方案的一个优点是,只要没有达到信用限制,则信用返还的时延将不会影响性能。

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

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

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

事务描述符1000包括全局标识符字段1002、属性字段1004和信道标识符字段1006。在所示示例中,全局标识符字段1002被描绘为包括本地事务标识符字段1008和源标识符字段1010。在一个实施例中,全局事务标识符1002对于所有未完成的请求是唯一的。

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

属性字段1004指定事务的特性和关系。就这一点而言,属性字段1004潜在地用于提供允许对事务的默认处理进行修改的附加信息。在一个实施例中,属性字段1004包括优先级字段1012、保留字段1014、排序字段1016和非窥探(no-snoop)字段1018。这里,优先级子字段1012可以由启动程序修改以向事务指派优先级。保留属性字段1014被保留用于将来使用或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全属性的可能的使用模型。

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

链路层

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

物理层

在一个实施例中,物理层920包括逻辑子块921和电子块922,以将分组物理地发送到外部设备。这里,逻辑子块921负责物理层920的“数字”功能。就这一点而言,逻辑子块包括用于准备用于由电子块922传输的传出信息的发送部分,以及用于在将接收到的信息传递到链路层910之前标识并准备接收到的信息的接收机部分。

电子块922包括发射机和接收机。发射机由逻辑子块921供应符号,发射机将该符号串行化并发送到外部设备上。接收机被供应有来自外部设备的经串行化的符号,并且将接收到的信号变换为位流。位流被解串行化并且供应给逻辑子块921。在一个实施例中,采用8b/10b传输码,其中发送/接收十位符号。这里,特殊符号用于利用帧923对分组进行组帧。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。

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

接下来参考图11,示出了pcie串行点对点结构的实施例。尽管示出了pcie串行点对点链路的实施例,但是串行点对点链路不限于此,因为串行点对点链路包括用于发送串行数据的任何传输路径。在所示的实施例中,基本pcie链路包括两个低电压差分驱动信号对:发送对1106/1111和接收对1112/1107。因此,设备1105包括用于将数据发送到设备1110的发送逻辑1106以及用于从设备1110接收数据的接收逻辑1107。换言之,在pcie链路中包括两个发送路径(即,路径1116和1117)以及两个接收路径(即,路径1118和1119)。

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

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

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

转向图12,示出了根据本公开的一个实施例的由处理器形成的示例性计算机系统的框图,该处理器包括用于执行指令的执行单元,其中互连中的一个或多个实现一个或多个特征。例如,在本文描述的实施例中,系统1200包括根据本公开的组件,例如,用于采用包括逻辑的执行单元来执行用于处理数据的算法的处理器1202。系统1200表示可从intel公司(santaclara,california)获得的基于pentiumiiitm、pentium4tm、xeontm、itanium、xscaletm和/或strongarmtm微处理器的处理系统,尽管也可以使用其他系统(包括具有其他微处理器的pc、工程工作站、机顶盒等)。在一个实施例中,样本系统1200执行可从microsoft公司(rendmond,washington)获得的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控制器中心1240、无线收发机1226、闪速bios1228、网络控制器1234、音频控制器1236、串行扩展端口1238、i/o控制器1240等)执行本领域技术人员所公知的其常规功能。

在一个实施例中,处理器1202包括级别一(l1)内部高速缓冲存储器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(例如,intel快速路径互连(qpi)或其他已知的高性能计算互连)、到存储器1220的高带宽存储器路径1218、到图形加速器1212的点对点链路(例如,符合快速外围组件互连(pcie)的结构)、控制器中心互连1222、i/o或用于耦合其他所示组件的其他互连(例如usb、pci、pcie)。这种组件的一些示例包括音频控制器1236、固件中心(闪速bios)1228、无线收发机1226、数据存储装置1224、包含用户输入和键盘接口1242的旧有的i/o控制器1240,串行扩展端口1238(例如,通用串行总线(usb))和网络控制器1234。数据存储设备1224可以包括硬盘驱动器、软盘驱动器、cd-rom设备、闪速存储器设备或其他大容量存储设备。

现在参考图13,示出了根据本公开的实施例的第二系统1300的框图。如图13中示出的,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一个可以是处理器的某个版本。在一个实施例中,1352和1354是串行点对点一致互连结构的一部分,例如,intel快速路径互连(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)耦合,这些存储器可以是本地附接到相应处理器的主存储器的部分。

处理器1370、1380各自使用点对点接口电路1376、1394、1386、1398经由单独的p-p接口1352、1354与芯片组1390交换信息。芯片组1390还经由接口电路1392沿着高性能图形互连1339与高性能图形电路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的点对点架构,系统可以实现多点总线或其他这样的架构。

使用平台中存在的各种惯性和环境传感器,可以实现许多不同的用例。这些用例实现包括感知计算的高级计算操作,并且还允许关于功率管理/电池寿命、安全性和系统响应性进行增强。

例如,关于功率管理/电池寿命问题,至少部分地基于来自环境光传感器的信息,确定平台位置中的环境光条件并相应地控制显示器的强度。因此,在特定光条件下减少操作显示器所消耗的功率。

关于安全性操作,基于从传感器获得的上下文信息(例如,位置信息),可以确定是否允许用户访问特定安全文档。例如,可以准许用户在工作场所或家庭位置访问这些文档。然而,当平台存在于公共位置时,阻止用户访问这些文档。在一个实施例中,该确定基于例如经由gps传感器或对地标的相机识别确定的位置信息。其他安全性操作可以包括提供彼此靠近距离内的设备的配对,例如,如本文描述的便携式平台和用户的台式计算机、移动电话等。在一些实现方式中,当这些设备如此配对时,经由近场通信实现特定共享。然而,当设备超过特定距离时,可以禁用这种共享。此外,当将如本文描述的平台与智能电话配对时,当在公共位置时,警报可以被配置为当设备移动超过离彼此预确定的距离时触发。相反,当这些配对的设备处于安全位置(例如,工作场所或家庭位置)时,设备可以超过该预确定的限制而不触发这种警报。

还可以使用传感器信息来增强响应性。例如,即使当平台处于低功率状态时,仍然可以使得传感器能够以相对低的频率运行。因此,确定例如由惯性传感器、gps传感器等确定的平台位置的任何改变。如果没有注册过任何这样的变化,则发生到先前的无线中心(例如,wi-fitm接入点或类似无线使能器)的更快连接,因为在这种情况下不需要扫描可用的无线网络资源。因此,实现当从低功率状态唤醒时的更高级别的响应性。

应当理解,使用经由如本文描述的平台内的集成传感器获得的传感器信息,可以实现许多其他用例,并且以上示例仅用于说明的目的。使用如本文描述的系统,感知计算系统可以允许添加替代输入模态,包括手势识别,并且使得系统能够感测用户操作和意图。

在一些实施例中,可以存在一个或多个红外或其他热感测元件,或用于感测用户的存在或移动的任何其他元件。这种感测元件可以包括一起工作、按顺序工作或两者的多个不同元件。例如,感测元件包括通过例如超声飞行时间相机或图案化光相机提供诸如光或声音投影之类的初始感测、接下来感测手势检测的元件。

另外,在一些实施例中,该系统包括光发生器以产生照明线。在一些实施例中,该线提供关于虚拟边界的视觉提示,即空间中的虚构或虚拟位置,其中用户通过或突破虚拟边界或平面的动作被解释为与计算系统接合的意图。在一些实施例中,照明线可以随着计算系统关于用户转变到不同状态而改变颜色。照明线可以用于为用户提供空间中的虚拟边界的视觉提示,并且可以由系统用于确定计算机关于用户的状态转变,包括确定何时用户希望与计算机接合。

在一些实施例中,计算机感测用户位置并操作以将用户的手移动通过虚拟边界解释为指示用户与计算机接合的意图的手势。在一些实施例中,在用户经过虚拟线或平面时,由光发生器生成的光可以改变,从而向用户提供用户已经进入用于提供手势以向计算机提供输入的区域的视觉反馈。

显示屏可以提供计算系统关于用户的状态转变的视觉指示。在一些实施例中,以其中例如通过使用感测元件中的一个或多个感测元件由系统感测到用户的存在的第一状态提供第一屏幕。

在一些实现方式中,系统用于感测用户身份,例如,通过面部识别。这里,可以以其中计算系统已经识别出用户身份的第二状态提供到第二屏幕的转变,其中该第二屏幕向用户提供用户已经转变到新状态的视觉反馈。可以以其中用户已经确认对用户的识别的第三状态发生到第三屏幕的转变。

在一些实施例中,计算系统可以使用转变机制来确定针对用户的虚拟边界的位置,其中虚拟边界的位置可以随用户和上下文而变化。计算系统可以生成光(例如,照明线),以指示用于与系统接合的虚拟边界。在一些实施例中,计算系统可以处于等待状态,并且可以以第一颜色产生光。计算系统可以检测用户是否已经到达虚拟边界,例如,通过使用感测元件来感测用户的存在和移动。

在一些实施例中,如果检测到用户已经越过虚拟边界(例如,用户的手比虚拟边界线更靠近计算系统),则计算系统可以转变到用于从用户接收手势输入的状态,其中指示转变的机制可以包括光指示虚拟边界改变为第二颜色。

在一些实施例中,计算系统然后可以确定是否检测到手势移动。如果检测到手势移动,则计算系统可以继续进行手势识别过程,该过程可以包括使用来自手势数据库的数据,该手势数据库可以驻留在计算设备中的存储器中或者可以由计算设备以其他方式访问。

如果识别出用户的手势,则计算系统可以响应于输入而执行功能,并且如果用户在虚拟边界内则返回以接收附加手势。在一些实施例中,如果未识别到手势,则计算系统可以转变到错误状态,其中指示错误状态的机制可以包括光指示虚拟边界改变为第三颜色,其中如果用户在虚拟边界内以便与计算系统接合,则系统返回以接收附加的手势。

如上面提及的,在其他实施例中,系统可以被配置为可转换平板系统,其可以以至少两种不同的模式来使用:平板模式和笔记本模式。可转换系统可以具有两个面板,即显示面板和基底面板,从而在平板模式下,两个面板堆叠地布置在彼此顶部上。在平板模式下,显示面板面向外部,并且可以提供在常规平板中发现的触摸屏功能。在笔记本模式中,两个面板可以以打开的翻盖式配置来布置。

在各种实施例中,加速度计可以是具有至少50hz的数据速率的3轴加速度计。还可以包括陀螺仪,其可以是3轴陀螺仪。另外,可以存在电子罗盘/磁力计。另外,可以提供一个或多个接近度传感器(例如,用于打开盖板以感测人何时接近(或不接近)系统并调节功率/性能以延长电池寿命)。对于一些os的传感器融合能力(包括加速度计、陀螺仪和罗盘),可以提供增强的特征。另外,经由具有实时时钟(rtc)的传感器中心,可以实现从传感器唤醒机制,以在系统的其余部分处于低功率状态时接收传感器输入。

在一些实施例中,内部盖板/显示器打开开关或传感器用于指示盖板何时关闭/打开,并且可以用于将系统置于连接待机或自动从连接待机状态唤醒。其他系统传感器可以包括用于内部处理器、存储器和皮肤温度监测的acpi传感器,以基于感测到的参数来实现处理器和系统操作状态的改变。

在实施例中,os可以是实现连接待机(本文中也称为win8cs)的8os。windows8连接待机或具有类似状态的另一os可以经由如本文描述的平台提供非常低的超空闲功率,以使得应用能够以非常低的功耗保持连接到例如基于云的位置。该平台可以支持3个功率状态,即屏幕开启(正常);连接待机(作为默认“关闭”状态);以及关机(功耗为零瓦特)。因此,在连接待机状态下,即使屏幕关闭,平台也会在逻辑上开启(处于最小功率水平)。在这样的平台中,可以使功率管理对应用透明并维持持续连接,部分地由于卸载技术使得最低供电的组件能够执行操作。

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

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

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

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

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

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

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

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

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

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

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

上面描述了实施例的各个方面和组合,其中一些由以下示例表示:

示例1是一种装置,该装置包括:端口,其用于:跨双向多通道链路向链路伙伴发送用于改变多通道链路在第一方向上的链路宽度的请求;从链路伙伴接收用于改变双向多通道链路在第一方向上的链路宽度的确认;重新配置双向多通道链路,以在第二数量的通道上发送数据;以及在双向多通道链路上,在第二数量的通道上在第一方向上向链路伙伴发送数据。

示例2可以包括示例1的主题,其中,对链路伙伴的用于改变双向多通道链路的链路宽度的请求包括链路管理数据链路层分组(dllp),该链路管理dllp包括针对链路宽度的改变的请求,该链路管理dllp包括在数据业务流的每个方向上的期望的链路宽度。

示例3可以包括示例1-2中任一项的主题,其中,通道的第一数量大于通道的第二数量。

示例4可以包括示例3的主题,端口用于:向链路伙伴发送消息以指示针对从通道的第一数量改变为通道的第二数量的调度;在第二数量的通道上发送跳过有序集(skpos);以及在第二数量的通道上发送数据。

示例5可以包括示例1-2中任一项的主题,其中,通道的第二数量大于通道的第一数量。

示例6可以包括示例5的主题,端口用于:在第一数量的通道上发送数据;对要变为激活的通道执行链路训练;以及一旦附加的通道被激活,就在第二数量的通道上发送数据。

示例7可以包括示例5的主题,其中,端口包括下游端口,该下游端口用于:从链路伙伴的上游端口接收用于将多通道链路的通道的数量从第一数量改变为第二数量的请求;忽略来自上游端口的请求;以及等待来自链路伙伴的用于改变双向多通道链路的链路宽度的确认。

示例8可以包括示例5的主题,其中,用于将双向多通道链路的链路宽度从通道的第一数量改变为通道的第二数量的请求包括:用于通过激活双向多通道链路上可用的总通道的子集将传输通道的数量从传输通道的第一数量改变为传输通道的第二数量的请求。端口用于:对要被激活的总通道的子集执行链路训练;在预定时间处在第一数量的通道上并且在总通道的子集上发送跳过有序集;调度在第二数量的通道上的数据传输;以及根据调度在所有活动通道上发送数据。

示例9可以包括示例5的主题,其中,用于将双向多通道链路的链路宽度从通道的第一数量改变为通道的第二数量的请求包括:用于通过激活双向多通道链路上可用的总通道的子集将接收通道的数量从接收通道的第一数量改变为接收通道的第二数量的请求。端口用于:确认在总通道的子集上完成了链路训练;调度在第二数量的通道上的数据接收;以及在第二数量的通道上接收数据。

示例10可以包括示例1-2中任一项的主题,其中,第一方向包括发送方向或接收方向中的一个。

示例11是一种方法,该方法包括:由端口跨双向多通道链路向链路伙伴发送用于改变在双向多通道链路上的在第一方向上的活动通道的数量的请求,该请求包括对期望的链路宽度的指示;从链路伙伴接收用于将双向多通道链路上的在第一方向上的活动通道的数量改变为期望的链路宽度的确认;配置双向多通道链路以使用期望的链路宽度进行操作;以及使用期望的链路宽度向链路伙伴发送或接收数据。

示例12可以包括示例11的主题,其中,第一方向是发送方向或接收方向中的一个。

示例13可以包括示例11-12中任一项的主题,其中,向链路伙伴发送请求包括向链路伙伴发送包括对期望的链路宽度的指示的链路管理数据链路层分组(dllp)。

示例14可以包括示例11-12中任一项的主题,其中,第一方向包括发送方向,并且活动通道中的改变包括将活动通道的数量从活动通道的第一数量增加到活动通道的第二数量,活动通道的第一数量大于活动通道的第二数量。

示例15可以包括示例14的主题,其中,配置双向多通道链路包括:对非活动通道执行链路训练;以及调度在非活动通道上的数据传输,以使其与在活动通道上的未来的数据传输一致。

示例16可以包括示例15的主题,还包括在非活动通道的链路训练期间在活动通道上发送数据。

示例17可以包括示例11-12中任一项的主题,其中,第一方向包括接收方向,并且活动通道中的改变包括将活动通道的数量从活动通道的第一数量增加到活动通道的第二数量,活动通道的第一数量大于活动通道的第二数量。

示例18可以包括示例17的主题,其中,配置双向多通道链路包括:确认在非活动通道上的链路训练;以及确认在非活动通道上的数据接收的调度,以使其与在活动通道上的未来的数据传输一致。

示例19可以包括示例11-12中任一项的主题,其中,期望的链路宽度包括链路宽度从通道的第一数量到通道的第二数量的减少,通道的第一数量大于通道的第二数量。

示例20可以包括示例19的主题,还包括:向链路伙伴发送消息以指示针对从通道的第一数量改变为通道的第二数量的调度;去激活第一数量的通道的子集;以及在第二数量的通道上发送数据。

示例21是一种系统,该系统包括:主机设备,其包括下游端口;端点设备,其包括上游端口;以及双向多通道链路,其互连下游端口和上游端口。下游端口用于:跨双向多通道链路向上游端口发送用于改变在双向多通道链路上的在第一方向上的活动通道的数量的请求,该请求包括对期望的链路宽度的指示;从上游端口接收用于将在双向多通道链路上的在第一方向上的活动通道的数量改变为期望的链路宽度的确认;配置双向多通道链路以使用期望的链路宽度进行操作;以及使用期望的链路宽度发送或接收去往上游端口的数据。

示例22可以包括示例21的主题,上游端口用于:向下游端口发送用于改变双向多通道链路的链路宽度的请求;从下游端口接收用于改变双向多通道链路的链路宽度的请求;以及向下游端口发送确认,以确认来自下游端口的用于改变链路宽度的请求。

示例23可以包括示例22的主题,下游端口用于:从上游端口接收用于改变双向多通道链路的链路宽度的请求;忽略来自上游端口的请求;以及等待来自上游端口的确认。

示例24可以包括示例21的主题,其中,跨双向多通道链路去往上游端口的用于改变在双向多通道链路上的在第一方向上的活动通道的数量的请求包括链路管理数据链路层分组(dllp),链路管理dllp包括对期望的链路宽度的指示。

示例25可以包括示例21的主题,下游端口用于:对要被激活的通道执行链路训练;以及在要被激活的通道的链路训练期间在活动通道上发送或接收数据。

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