首页> 中国专利> 用于高速互连的有序集

用于高速互连的有序集

摘要

一种系统和装置可以包括用于发送数据的端口;以及耦合到端口的链路。该端口可以包括物理层设备(PHY),其用于对物理层分组进行解码,该物理层分组是通过链路接收的。物理层分组可以包括与第一有序集相对应的第一位序列和与第二有序集相对应的第二位序列,第一位序列紧邻第二位序列。以预定的有序集间隔接收第一有序集,该预定的有序集间隔可以在流控制单位(flit)之后出现。第一有序集包括八个字节,第二有序集包括八个字节。在实施例中,可以通过针对有序集间隔的期望位检查接收到的位来确定有序集中的位错误。

著录项

  • 公开/公告号CN112732621A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN202110058148.0

  • 发明设计人 D·达斯夏尔马;

    申请日2020-03-27

  • 分类号G06F13/42(20060101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人刘瑜

  • 地址 美国加利福尼亚

  • 入库时间 2023-06-19 10:48:02

说明书

本申请是2020年3月27日提交的申请号为202010230757.5的同名专利申请的分案申请。

相关申请的交叉引用

本申请根据35U.S.C.§119(e)要求于2019年5月13日提交的序号为62/846,913的美国临时专利申请的权益,其全部内容通过引用并入本文中。

背景技术

有序集是物理层分组,互连链路伙伴可以将其用于各种控制功能。例如,有序集可用于链路训练、电源管理、流量控制和其他物理层功能。

附图说明

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

图2A是根据本公开的实施例的包括两个重定时器的互连的系统的示意图。

图2B是示出了根据本公开的实施例的带内上游端口和重定时器配置的连接系统的示意图。

图3A是示出根据本公开的实施例的示例电空闲有序集的示意图。

图3B是示出根据本公开的实施例的示例性电空闲退出有序集的示意图。

图3C是示出根据本公开的实施例的示例跳过有序集的示意图。

图4是根据本公开的实施例的用于处理有序集的过程流程图。

图5是示出根据本公开的实施例的示例开始数据流有序集的示意图。

图6A是示出根据本公开的实施例的用于从低功率状态唤醒的示例有序集的示意图。

图6B是根据本公开的实施例的用于处理用于从低功率状态唤醒的有序集的处理流程图。

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

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

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

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

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

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

图13示出了用于x4PCIe链路的具有每通道FEC方案的示例性流控制单位(flit)定义。

图14示出了针对x8和x2 PCIe链路的具有每通道FEC方案的示例性flit定义。

图15示出了针对各种PCIe链路宽度的具有每道FEC方案的示例性flit定义的flit特性的表格。

图16A-16C示出了根据各种放置规则的示例性flit分组序列。

图17示出了PCIe 5.0 TLP效率的表。

图18A是根据本公开的实施例的在收发设备对中实现的示例协议栈对的示意图。

图18B是根据本公开的实施例的示例逻辑PHY的示意图,该示例逻辑PHY包括用于对有序集进行编码和解码的逻辑元件。

附图未按比例绘制。

具体实施方式

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

尽管可以参考特定集成电路中的节能和能量效率来描述以下实施例,例如在计算平台或微处理器中,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于其他类型的电路或半导体器件,其也可以受益于更好的能量效率和节能。例如,所公开的实施例不限于台式计算机系统或超极本

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

参考图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中的重排序缓冲区、ILTB 120、加载/存储缓冲区和队列。其他资源,例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元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外部的计算系统中。在这种情况下,片上接口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)后端,即通常进行分析,转换,优化和代码生成的地方。一些编译器引用了一个中间部分,它示出了编译器的前端和后端之间描绘的模糊。结果,对编译器的插入,关联,生成或其他操作的引用可以在任何上述阶段或遍以及编译器的任何其他已知阶段或遍中发生。作为一个说明性示例,编译器潜在地在编译的一个或多个阶段插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,然后在变换阶段将调用/操作变换为更低级别的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,以及优化代码以便在运行时执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。

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

图2A是示出根据本公开的实施例的在上游组件下游端口202和下游组件上游端口208之间具有两个重定时器204和206的示例拓扑200的示意图和时序图。上游组件下游端口202可以是用于基于PCIe的设备的端口,例如CPU或其他能够生成数据分组并通过符合PCIe协议的数据链路传输数据分组的设备。下游组件上游端口208可以是外围组件的端口,该外围组件可以从符合PCIe协议的链路接收数据分组。应当理解,上游组件下游端口202和下游组件上游端口208可以跨PCIe链路(图示为PCIe链路210a-c)发送和接收数据分组。

拓扑200可以包括一个或多个重定时器204和206。重定时器204和206可以用作在物理层工作的信号转发器,以微调来自上游组件202和/或下游组件上游端口208的信号。重定时器可以使用连续时间线性均衡(CTLE)、决策反馈均衡(DFE),并发送脉冲响应均衡(TxFIR EQ或仅TxEQ)。重定时器对数据链路和事务层是透明的,但实现了完整的物理层。

多通道PCIe链路在每个方向上分为三个链路段(LS)210a、210b和210c。上游组件下游端口202可以通过多通道PCIe链路210a耦合到重定时器1 204。重定时器1 204可以通过链路段210b耦合到重定时器2 206。并且重定时器2 206可以通过链路段210c耦合到下游组件上游端口208。

组件也可以通过边带链路进行耦合。上游组件下游端口202可以通过边带链路212a耦合到重定时器1 204。重定时器1 204可以通过边带链路212b耦合到重定时器2 206。并且重定时器2 206可以通过边带链路212c耦合到下游组件上游端口208。

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

每个重定时器204和206可以具有上游路径和下游路径。在一些实施方式中,重定时器可以包括两个伪端口,并且伪端口可以动态地确定它们各自的下游/上游朝向。此外,重定时器204和206可以支持包括转发模式和执行模式的操作模式。在某些情况下,重定时器204和206可以解码在子链路上接收到的数据,并对在其另一子链路上向下游转发的数据进行重新编码。这样,重定时器可以在将位流重新生成并重新发送到另一设备甚至另一重定时器(或重驱动器或转发器)之前捕获接收到的位流。在某些情况下,重定时器可以修改其接收的数据中的某些值,例如在处理和转发有序集数据时。另外,重定时器可以潜在地支持任何宽度选项作为其最大宽度,例如由规范(例如PCIe)定义的一组宽度选项。

随着串行互连(例如PCIe、UPI、USB等)的数据速率提高,越来越多地使用重定时器来扩展信道范围。多个定时器可以级联,以达到更长的信道范围。可以预料,随着信号速度的增加,一般而言,信道范围通常会减小。因此,随着互连技术的加速,重定时器的使用可以变得更加普遍。例如,由于采用速率为16GT/s的PCIe第4代来支持PCIe第3代(8GT/s),因此在PCIe互连中重新定时器的使用可以增加,随着速度的提高其他互连情况也如此。

在一种实现方式中,可以针对基于PCI Express第4代(16GT/s)的重定时器定义通用的BGA(球栅阵列)封装。这样的设计至少可以解决传统PCIe第3代(8GT/s)重定时器设备中发现的一些示例缺陷,以及采用PCIe第4代时出现的一些问题。此外,对于PCIe第4代,重定时器供应商的数量和体积有望增加。由于双倍数据速率(从8GT/s到16GT/s)的信号损耗,第4代中可实现的互连长度大大缩短。在这种和其他示例互连技术中,随着数据速率的增加,重定时器可以因此具有更大的效用,因为它们可以用于显著增加信道长度,否则信道长度将受到增加的数据率的限制。

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

上游组件下游端口202可以访问存储元件222,例如闪存、高速缓存或其他存储器设备。重定时器1 204可以可选地包括类似的存储元件224。重定时器2 206可以可选地包括类似的存储元件226。下游组件上游端口208可以可选地包括类似的存储元件228。

图2B是示出了根据本公开的实施例的带内上游端口和重定时器配置的连接的系统250的示意图。如图2A所示,上游组件下游端口202可以通过由两个重定时器204、206扩展的链路210a-c耦合到下游组件上游端口208。在该示例中,下游端口202可以被提供有重定时器配置寄存器地址/数据寄存器252以使用增强的SKP OS的字段来保存要在配置访问命令中发送到两个重定时器之一的数据。SKP OS的一位或多位可以包括命令代码、数据或地址,以用于重定时器(例如分别为204、206)的配置寄存器(例如分别为256、258)以从寄存器256、258中读取或写入数据到寄存器256、258。重定时器可以通过自身在增强的SKP OS的后续实例中对响应数据进行编码来响应通过在增强的SKP OS的实例中对数据进行编码而发送的配置访问命令。可以在下游端口提取由重定时器(例如204、206)编码的数据,并将其记录在重定时器配置数据返回寄存器(例如254)中。可以通过系统软件和/或系统的其他组件向上游设备下游端口202维护的寄存器(例如252、254)进行读写操作,允许(间接)访问重定时器寄存器:一个寄存器(例如,252)将地址/数据/命令传送给重定时器,以及第二寄存器(例如254),该第二寄存器存储从重定时器返回的响应。在其他实施方式中,在其他示例中,代替或除了在上游组件下游端口202处保持寄存器之外,可以将此类寄存器(例如260)保持在下游组件上游端口208处。

继续图2B的示例,结合用于提供对重定时器寄存器的带内访问的机制,重定时器可以具有经构造的寄存器,这些寄存器可以用明确定义的位和特性来寻址。在此示例中,增强的SKP OS被定义/修改为物理层生成的周期性模式,以将命令/信息从“重定时器配置寄存器地址/数据”(例如252)传递到重定时器,并将来自重新定时器重的响应传递回以加载到“重定时器配置数据返回”(例如,254),并为CRC分配了一些位以保护数据。例如,在PCIe中,这可以包括增强现有的SKP有序集(例如,使用CSR访问和CSR返回(受CRC保护的位))。此外,可以定义用于确保保证将命令/信息传递给重定时器和相应的响应返回的流程。物理层机制可以增强,以便在需要某种服务的情况下还包括来自重定时器的通知(作为响应的附加),还包括其他示例功能。

第6代及更高版本的PCIe可以使用带有前向纠错(FEC)的脉冲幅度调制(PAM-4),以对于可接受范围内的数据流以有效的位错误率(BER)以64GT/s的速度运行。当链路处于活动(L0)电源状态时,数据块的FEC和flit通常用于正常操作。

但是,有序集(OS)不能由相同的FEC机制保护,因为许多(如果不是大多数的话)OS不会被加扰。例如,电空闲退出有序集(EIEOS)用于重置加扰器,提供低频模式并获得块对齐。因此,EIEOS不会被加扰,并且不应使用纠错码(ECC)位进行更改。跳过有序集(SKP OS)的长度可以变化,因为重定时器可以添加或删除SKP OS。因此,使用FEC覆盖所有有序集具有挑战性,每个OS都有自己独特的一组要求和长度。本公开描述了在保留与每个有序集相关联的特性和功能的同时,在例如基于PCIe第6代或以上协议的链路的高BER互连链路中的有序集的错误保护机制。

在本公开中,物理层设备可以将128b OS划分为两个64-b(8B)部分或组块。复制与CRC/奇偶校验保护一起用于提高可靠性和可用性。

有序集分为两大类,每类都有不同的方法来处理高原始BER:

如果一个8B组块良好,每个序列都独立地受CRC保护,则将诸如TS1/TS2之类的有序集视为良好。

在数据流之后发送的有序集,例如SKP OS(创建或删除链路伙伴之间的延迟)、EIEOS(重新训练)、EIOS(低功耗状态),需要两个8B组块良好才能被认为是良好OS。因此,每个8B组块都有其自己的内置冗余,以改善其有效BER。

控制SKP有序集有效负载(例如奇偶校验和余量命令/状态字段)将代替数据链路层有效负载以预定的flit发送,以避免由于链路中的原始BER高而导致有序集中出现混叠。

本文所述的技术和设备导致保留现有的PCIe有序集机制,同时以第六代中期望的高BER提供可靠性和可用性。

本公开将每个有序集(OS)定义为128位(16字节)的块。每个128位OS块包括两个64位(8B)组块或部分。完成此分配以处理故障模型,其中每个突发的长度<=16。如果突发长度较长,则通过使有序集较长来应用相同的原理。例如,如果突发长度小于等于32,则每个OS可以是256位,包括两个128位组块。表1说明了使用OS分配实现的有效位错误率(BER)。

表1.使用OS分配获得的有效位错误率(BER)。

每个OS分为两大类;每类都使用两种8B组块来处理高原始BER的不同方法:

如果其中任一个8B组块均良好,每个TSB均受CRC保护,则将TS1/TS2之类的有序集视为良好。

在数据流之后发送的有序集(例如SKP OS、EIEOS、EIOS)需要两个8B组块才能被认为是好的OS。但是,每个8B组块都有其自己的内置冗余以改善其有效BER。

跨两个8B组块或在每个8B组块内的这些复制有助于OS在大多数情况下具有1.3E-10的相同的有效错误概率,如下表1所示。在某些情况下(例如,TS1/TS2的原始BER为1E-4),该数字不足。可以通过在有序集之间进行复制来解决这些问题(例如,发送24个TS2有序集,而不是PCIe第1-5代中的16个TS2有序集)。

在本公开中,未使用区分OS(128b)与数据块之间的同步头。而是以固定间隔发送SKP有序集。数据流启动后,SKP有序集将以该固定间隔继续。但是,如果链路需要从活动状态(L0)过渡到恢复状态,则可以用电空闲退出有序集(EIEOS)替代SKP OS;如果链路需要转换到低功率状态(例如,L0)或从L0转换到L1,则可以用SKP OS代替电空闲退出有序集(EIOS)。因此,在数据流中时,可以将接收器配置为在特定间隔内识别以下3种OS之一:SKPOS,EIEOS或EIOS。在该16B对齐的块中,假设应该校正突发长度,接收器可以在三个OS之一之间进行区分。

图3A是示出根据本公开的实施例的示例性电空闲有序集(EIOS)300的示意图。EIOS 300被示为16个字节(或两个8个字节部分302和304)。还显示了冗余,其中重复了每个8B部分。图3B是示出根据本公开的实施例的示例性电退出有序集310的示意图。EIEOS 310被示为16个字节(或两个8个字节部分312和314)。还显示了冗余,其中重复了每个8B部分。

图3C是示出根据本公开的实施例的示例跳过有序集320的示意图。图3C示出了作为8B部分的SKP OS 322以及其他SKP OS部分324。在实施例中,可以使用24-48B的SKP OS。SKP_END OS 326可以代表SKP OS的结尾,也可以分成8B部分。可以在SKP_END OS 326之后调度PHY有效负载328。还可以以与其他OS类似的方式来复制PHY有效负载,以实现冗余。也就是说,PHY有效负载可以分配为两个8字节部分,这8字节部分中的每一个都承载相同的信息。

图3A–C举例说明了在计划的SKP OS间隔下,可以紧接在数据块之后接收的三个有序集的示例编码。选择EIEOS 300以保留1GHz低频内容。选择EIOS和SKP OS,以使EIOS 300、EIEOS 310和SKP/SKP_END OS 320之间的4B对齐编码之间具有合理的汉明距离,如下表2所示。本领域技术人员将认识到,这将防止突发错误<=16的任何混叠。表2中所示的值以及相应的汉明距离可以用作可以与接收到的OS进行比较的期望值。可以根据确定的OS类型的期望值以及接收到的OS是否包含错误来检查接收到的冗余OS中的一个或两个。

表2.各种OS之间的编码差异。

图4是根据本公开的实施例的用于处理有序集的处理流程图400。处理流程图400演示了本文所述的用于即使在存在错误的情况下也识别适当的有序集并采取适当措施的技术。

在本公开中,如稍后所述,SKP有序集在常规间隔到达接收器。在数据流402期间,如果接收到的数据在SKP OS间隔404之外,则接收器会跳过对OS 406的检查。

在数据流402期间,在期望OS(例如SKP OS)的间隔404,接收器在可能出现在该位置的三个OS之间进行区分。接收器检查与相应的字节位置匹配的8个字节中的5个(408),(410)。此检查确保影响最多3个字节的任何错误(长度<=16的突发将影响最多3个字节)可以得到纠正并得到匹配。如果没有找到匹配项,则意味着更多错误,并且链路进入恢复以重新训练链路(412)。如果8个字节中的5个匹配(410),则接收器可以在SKP OS、EIOS和EIEOS之间确定OS类型(414)。接收到EIOS表示链路将在接下来的8个字节之后进入低功耗状态(L0,L1)(428)。接收到EIEOS将使链路进行恢复(412)。

如果接收器在读取了前8B之后接收到SKP OS(416),则接收器将继续检查下一个8字节的SKP或SKP_END(418)。如果8个字节中的5个与预期的SKP_END OS匹配,则表明在SKPOS末尾的8个字节PHY有效负载之后的数据流。PHY有效负载可以被处理(422),并且接收器在调度的OS间隔期间返回以检查OS(404)。

接收到的SKP OS的长度可以为24、32、40、48或56个字节。因此,如果接收方继续接收SKP OS,则该检查(针对SKP或SKP_END)最多可以进行5次。如果8个字节中的至少5个与SKP OS(424)相匹配,则接收器可以检查接收到的8B SKP OS的数量不超过5。如果8B SKPOS的数量大于或等于6(超过5),则链路可以进入恢复状态(412)。如果8个字节中的至少5个与SKP OS不匹配(424),则该链路进入恢复状态(412)。如果未找到SKP或SKP_END OS,或者已经进行了5次“SKP对SKP_END OS”检查,并且接收器一直在接收连续的SKP OS流,则链路将进入恢复状态,这是因为它指示无法纠正的错误。

如果SKP或SKP_END的数量不超过5,则接收器可以读取下一个8B(418),然后从那里继续检查SKP OS或SKP_END OS。

在本公开中,以固定的间隔插入SKP OS。这样选择以使其与流控制单位(flit)边界对齐。在数据流期间,可以将SKP OS插入到flit边界处或插入正在进行的跨越两个(或更多)flit的TLP内。

每个重定时器可以插入或删除两个SKP(即8字节)。由端口发送的SKP OS可以为40字节,但是在端口接收时,SKP OS可以为24、32、40、48或56字节。由于在每个端口/伪端口中添加或删除了8个字节,因此SKP OS插入间隔的时间可以是PCIe第3-5代的两倍(即SRNS或通用时钟(Common Clock)的740块和SRIS的74块,其中1个块=每个通道16字节)。

在第4代和第5代数据速率中,控制SKP有序集用于有效负载,例如奇偶校验和余量命令/状态字段。在第3代到第5代数据速率中,SKP OS带有奇偶校验信息以识别错误的通道段以及该通道的LFSR(线性反馈移位寄存器)值。控制SKP OS和SKP OS以第4代和第5代数据速率交替。鉴于在高BER链路中预期会有突发错误,本文所述的技术将这些信息附加到具有复制功能的SKP OS间隔的后8个字节中,如表3所示。

表3.SKP OS末尾的PHY层有效负载。

尽管使用了一种类型的SKP OS,但有效负载在线性反馈移位寄存器(LFSR)序列和余量命令/状态之间交替,类似于第4代和第5代。“有效负载类型”字段指示发送何种类型的有效负载并被复制4次。类似地,端口奇偶校验反映从SDS OS或先前的SKP OS之后(以较早者为准)到当前SKP OS之前的flit之前的flit中所有位的偶数奇偶校验,以及反映每个重定时器的奇偶校验计算的2位发送4次。有效负载类型以及三个奇偶校验位被复制4次。对所有这4位向量进行多数表决,以确定哪一个是正确的。LFSR及其对应的偶数奇偶校验被发送两次,并进行比较以部署正确的LFSR。余量有效负载与余量CRC/奇偶校验一起发送两次。如果两个副本中的一组通过其奇偶校验和CRC校验,它将被用作有效副本。

通过TS1/TS2有序集处理链路(重新)训练,每32个TS1/TS2有序集发送一次EIEOS。链路(重新)训练在“恢复”和“配置”状态下进行。如果链路在进入恢复之前处于电空闲状态,则使用EIEOS唤醒链路伙伴。本公开将以重复模式发送4个背对背的EIEOS,随后发送32个TS1有序集。发送4个背对背EIEOS以确保低频模式(0.5GHz)保持8ns,以使链路伙伴的退出电空闲(EI)检测电路产生波动。一旦链路伙伴唤醒,就可以通过记录退出EI信号(以及可选的建立位锁定的过程)证明,链路可以每32个TS1/TS2有序集发送一个EIEOS,以最小化链路(重新)训练时间。TS1/TS2有序集携带大量信息位。但是,并非在所有状态下都需要所有信息位。由于链路具有较高的BER,因此所提出的发明将每个TS1/TS2有序集(16个符号,每个符号为一个字节)分成两个相同的一半,如下表4所示。符号0(和8)是TS1标识符,未加扰。在每个状态中不需要重叠的信息位在同一符号上发送。例如,“链路号”和“通道号”在诸如“配置”之类的状态中是有意义的,而在“恢复”中是没有意义的。均衡信息(表示为EQ字节0-3)仅在恢复状态(并且主要在Recovery.EQ子状态)中有用,因此在这些状态期间发送它们。因此,符号1和2EQ字节处于恢复状态,但在其他状态下携带链路号/通道号,如下表4所示。这有助于在相同的字节数内更频繁地发送相关信息,以有效地纠正错误。每7个字节由在符号8/15中发送的8位CRC保护。应该注意的是,由于相同的符号相隔8个字节,因此突发错误<=64位不会影响副本。TS1/TS2、EIEOS和SKP OS是在(重新)训练期间可以共存的唯一OS。

表4.TS1/TS2有序集。

图5是示出根据本公开的实施例的示例开始数据流有序集500的示意图。起始数据流(SDS)OS在数据流开始之前提供标记。SDS OS指示TS2结束。因此,SDS OS的开始也指示TS2 OS的结束。SDS OS的内置冗余由8B部分502和8B部分504表示。

图6A是示出根据本公开的实施例的用于从低功率状态唤醒的示例有序集的示意图。图6B是根据本公开的实施例的用于处理有序集以从低功率状态唤醒的处理流程图。接收器可以处于低功率状态(例如,L0状态)(652)。在从低功率状态退出时,本文描述的技术遵循图6A–B所示的顺序。首先,最初的4个EIEOS会导致链路伙伴的接收器从低功耗状态中唤醒(654)。随后,N个快速训练序列(FST)使接收器实现位锁定(656)。在一些实施例中,可以使用TS1/TS2 OS代替N FST。然后,可以使用EIEOS(1-4OS)来实现块对齐(658)。在块对齐之后,可以使用SKP OS序列(40字节)来建立SKP间隔(660)并执行通道到通道偏移校正(662)。SKP/SKP_END OS在8字节对齐边界中使用5个良好字节进行校验,并且只要在32字节SDS上接收到4B对齐边界中的至少四个良好E1_87_87_87(4B)集,就接受SDS(如图4所描述的)。SDS标志着新数据流的开始(664)。SDS还可以用于建立通道到通道的偏移校正。

本公开描述了在训练期间用于具有可靠性的内置错误校正的以下规则:

只要符号0–7或符号8–15通过CRC/奇偶校验,接收到的TS1/TS2就被视为有效。如果两组都通过CRC/奇偶校验但彼此不匹配,则与先前的TS1/TS2匹配的一组(如果有的话)被视为有效。如果没有先前的TS1/TS2,并且两个集都不匹配,我们可以接受其中一个作为有效的TS1/TS2。

在解密TS1/TS2有序集之前,可以使用EIEOS获得块对齐。如果后续的EIEOS在不同的边界上,则更新块边界。

可以接收SKP OS,并且可以进行严格的初始检查以匹配SKP和SKP_END的所有字节(而不是8字节匹配中的5个)。发送TS2有序集之前,可以使用至少两个SKP OS建立一个SKPOS间隔。

在开始数据流之前,可以发送两个背对背SDS,这两个SDS都不应与发送器上SKPOS的开始位置重叠。

在下列情况下,SDS被视为在对齐的128b(16B)边界中“已接收”:

1)SDS不是SKP OS起点的位置;

2)根据LTSSM规则,接收器已收到强制性数量的TS2。

3)接收器已收到四个良好的E1_87_87_87(4B)集,其中至少两个处于奇数4B对齐位置(即字节0-3、8-11)。(这第三条规则确保接收器直接检查固定的TS2未加扰字节;EIEOS会自然检查,因为它在所有字节中都未加扰,类似于SDS。)

接收器可以背对背接收两个SDS,以开始接收数据流。

即使本公开是在PCIe第6代的上下文中描述的,本领域技术人员将认识到,如果使用OS,这些概念适用于其他互连(例如,诸如一致性/存储链路、USB等的多通道链路的未来代的产品)。

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

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

系统存储器710包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统700中的设备可访问的其他存储器。系统存储器710通过存储器接口716耦合到控制器集线器715。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双信道DDR存储器接口和动态RAM(DRAM)存储器接口。

在一个实施例中,控制器集线器715是外围组件互连快速(PCIe或PCIE)互连层次结构中的根中心、根联合体或根控制器。控制器集线器715的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根端口控制器/中心。术语芯片组通常是指两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储控制器集线器(MCH)。注意,当前系统通常包括与处理器705集成的MCH,而控制器715将以如下所述的类似方式与I/O设备通信。在一些实施例中,可选地通过根联合体715来支持对等路由。

这里,控制器集线器715通过串行链路719耦合到交换机/网桥720。输入/输出模块717和721,也可以被称为接口/端口717和721,包括/实现分层协议栈以在控制器集线器715和交换机720之间提供通信。在一个实施例中,多个设备能够耦合到交换机720。

交换机/网桥720将来自设备725的分组/消息从上游(即,朝着根联合体的层次结构向上)路由到控制器集线器715,以及朝着远离根端口控制器的层次结构向下从处理器705或系统存储器710向下游路由到设备725。在一个实施例中,交换机720被称为多个虚拟PCI-PCI桥接设备的逻辑组件。设备725包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬件驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。在PCIe本地设备(例如设备)中,通常将其称为端点。尽管没有具体示出,但是设备725可以包括PCIe到PCI/PCI-X的桥以支持传统的或其他版本的PCI设备。PCIe中的端点设备通常被分类为旧式、PCIe或根复合集成端点。

图形加速器730还通过串行链路732耦合到控制器集线器715。在一个实施例中,图形加速器730耦合到MCH,MCH耦合到ICH。然后将交换机720和I/O设备725耦合到ICH。I/O模块731和718还用于实现分层协议栈以在图形加速器730和控制器集线器715之间进行通信。类似于上面的MCH讨论,图形控制器或图形加速器730本身可以集成在处理器705中。

转到图8,图8示出了分层协议栈的实施例。分层协议栈700包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。尽管下面参考图7-10进行的讨论涉及PCIe栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈800是PCIe协议栈,包括事务层805、链路层810和物理层820。接口,例如图7中的接口717,718,721,722,726和731,可以表示为通信协议栈800。作为通信协议栈的表示也可以称为实现/包括协议栈的模块或接口。

PCI Express使用分组在组件之间传递信息。在事务层805和数据链路层810中形成分组以将信息从发送组件传送到接收组件。当发送的分组流经其他层时,它们会扩展为处理这些层的分组所需的附加信息。在接收侧,发生反向过程,并且分组从其物理层820表示变换到数据链路层810表示,并且最终(对于事务层分组)变换为可以由接收设备的事务层805处理的形式。

事务层

在一个实施例中,事务层805用于提供设备的处理核心和互连架构之间的接口,例如数据链路层810和物理层820。在这方面,事务层805的主要职责是分组的汇编和反汇编(即事务层分组或TLP)。事物层805通常管理TLP的基于信用的流控制。PCIe实现分离事务,即具有由时间分隔的请求和响应的事务,允许链路在目标设备收集响应数据时携带其他业务。

另外,PCIe利用基于信用的流控制。在该方案中,设备在事务层805中为每个接收缓冲器通告初始信用量。在链路的相对端的外部设备,例如图7中的控制器集线器715,计算由每个TLP消费的信用数。如果事务未超过信用额度,则可以发送事务。在接收到响应后,将恢复一定数量的信用。信用方案的一个优点是,如果没有遇到信用额度,信用返还的延迟不会影响性能。

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

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

快速参考图9,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符900是用于携带事务信息的机制。在这方面,事务描述符900支持系统中的事务的识别。其他潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。

事务描述符900包括全局标识符字段902、属性字段904和信道标识符字段906。在所示示例中,全局标识符字段902被描绘为包括本地事务标识符字段908和源标识符字段910。在一个实施例中,全局事务标识符902对于所有未完成的请求是唯一的。

根据一种实现方式,本地事务标识符字段908是由请求代理生成的字段,并且对于需要完成该请求代理的所有未完成请求它是唯一的。此外,在该示例中,源标识符910唯一地标识PCIe层次结构内的请求者代理。因此,与源ID 910一起,本地事务标识符908字段提供层次结构域内的事务的全局标识。

属性字段904指定事务的特征和关系。在这方面,属性字段904潜在地用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段904包括优先级字段912、保留字段914、排序字段916和非窥探字段918。这里,优先级子字段912可以由发起者修改以向事务分配优先级。保留属性字段914保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。

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

链路层

链路层810(也称为数据链路层810)充当事务层805和物理层820之间的中间级。在一个实施例中,数据链路层810的职责是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层805组装的TLP,应用分组序列标识符811,即标识号或分组号,计算并应用错误检测码,即CRC 812,并将修改的TLP提交给物理层820用于跨物理到外部设备的传输。

物理层

在一个实施例中,物理层820包括逻辑子块821和电子块822,以物理地将分组发送到外部设备。这里,逻辑子块821负责物理层821的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块822发送的传出信息的发送部分,以及用于在将所接收的信息传递到链路层810之前识别和准备所接收的信息的接收部分。

物理块822包括发送器和接收器。发送器由逻辑子块821提供符号,发送器将符号串行化并发送到外部设备。接收器提供来自外部设备的串行符号,并将接收的信号转换为位流。位流被反序列化并提供给逻辑子块821。在一个实施例中,采用8b/10b传输码,其中发送/接收10位符号。这里,特殊符号用于利用帧823对分组进行成帧。此外,在一个示例中,接收器还提供从传入串行流中恢复的符号时钟。

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

接下来参考图10,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示的实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对1006/1011和接收对1012/1007。因此,设备1005包括将数据传输到设备1010的传输逻辑1006以及从设备1010接收数据的接收逻辑1007。换句话说,在PCIe链路中包含两个发送路径,即路径1016和1017,以及两个接收路径,即路径1018和1019。

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

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

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

转向图11,示出了由处理器形成的示例性计算机系统的框图,该处理器包括用于执行指令的执行单元,其中,根据本公开的一个实施例,一个或多个互连实现一个或多个特征。系统1100包括组件,例如处理器1102,以采用根据本公开的,例如在本文所述实施例中的执行单元,该执行单元包括用于执行过程数据的算法的逻辑。系统1100代表基于可从加利福尼亚州圣克拉拉的英特尔公司获得的PENTIUM III

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

在此说明的实施例中,处理器1102包括一个或多个执行单元1008,以实现将执行至少一个指令的算法。可以在单处理器台式机或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统1100是“中心”系统架构的示例。计算机系统1100包括处理器1102以用于处理数据信号。作为一个说明性示例,处理器1102包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或者诸如例如数字信号处理器之类的任何其他处理器设备。处理器1102耦合到处理器总线1110,该处理器总线1110在处理器1102与系统1100中的其他组件之间传输数据信号。系统1100的元件(例如,图形加速器1112、存储器控制器集线器1116、存储器1120、I/O控制器集线器1124、无线收发器1126、闪存BIOS 1128、网络控制器1134、音频控制器1136、串行扩展端口1138、I/O控制器1140等)执行其常规功能,这些功能对于本领域技术人员来说是众所周知的。

在一个实施例中,处理器1102包括一级(L1)内部高速缓冲存储器1104。根据架构,处理器1102可以具有单个内部高速缓存或多层内部高速缓存。其他实施例包括取决于特定实现方式和需求的内部和外部高速缓存两者的组合。寄存器文件1106用于将各种类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、存储体寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。

执行单元1108,包括执行整数和浮点运算的逻辑,也位于处理器1102中。在一个实施例中,处理器1102包括用于存储微码的微码(ucode)ROM,当执行时,该微码将执行某些宏指令的算法或处理复杂场景。在此,微码潜在地是可更新的,以处理处理器1102的逻辑错误/修复。对于一个实施例,执行单元1108包括用于处理打包指令集1109的逻辑。通过将打包指令集1109与执行指令的相关电路一起包括在通用处理器的指令集中1102,可以使用通用处理器1102中的打包数据来执行许多多媒体应用所使用的操作。因此,可以通过使用处理器的数据总线的全宽用于对打包数据执行操作来加速和更有效地执行许多多媒体应用。这潜在地消除了在处理器的数据总线上传输较小数据单位来执行一个或多个操作(一次一个数据元素)的需要。

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

注意,本公开的任何前述特征或方面可以在图11所示的一个或多个互连上利用。例如,未示出的用于耦合处理器1102的内部单元的管芯上互连(ODI)实现了上述公开的一个或多个方面。或者,本公开与处理器总线1110(例如,英特尔快速路径互连(QPI)或其他已知的高性能计算互连)、到存储器1120的高带宽存储器路径1118、到图形加速器1112的点对点链路(例如,外围组件互连Express(PCIe)兼容结构)、控制器集线器互连1122、I/O或其他用于耦合其他所示组件的互连(例如USB、PCI、PCIe)相关联。此类组件的一些示例包括音频控制器1136、固件集线器(闪存BIOS)1128、无线收发器1126、数据存储设备1124、包含用户输入和键盘接口1142的旧式I/O控制器1110、串行扩展端口1138(例如通用串行总线(USB))和网络控制器1134。数据存储设备1124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。

现在参考图12,示出的是根据本公开的实施例的第二系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个可以是处理器的某个版本。在一个实施例中,1252和1254是串行点对点相干互连结构的一部分,例如英特尔的快速通道互连(QPI)架构。结果,本公开可以在QPI架构内实现。

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

示出的处理器1270和1280分别包括集成存储器控制器单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270,1280可以使用P-P接口电路1278,1288经由点对点(P-P)接口1250交换信息。如图12所示,IMC 1272和1282将处理器耦合到相应的存储器,即存储器1232和存储器1234,其可以是本地连接到相应处理器的主存储器的一部分。

处理器1270,1280各自使用点对点接口电路1276,1294,1286,1298经由各个PP接口1252,1254与芯片组1290交换信息。芯片组1290还经由接口电路1292沿着高性能图形互连1239与高性能图形电路1138交换信息。

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

芯片组1290可以经由接口1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线的总线。,但本公开的范围不限于此。

如图12所示,各种I/O设备1214耦合到第一总线1216,以及将第一总线1216耦合到第二总线1220的总线桥1218。在一个实施例中,第二总线1220包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1227和存储单元1228,诸如磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1230。此外,音频I/O 1224被示出耦合到第二总线1220。注意,其他架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图12的点对点架构,系统可以实现多分支总线或其他这样的架构。

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

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

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

还可以使用传感器信息来增强响应性。例如,即使当平台处于低功率状态时,仍然可以使传感器以相对低的频率运行。因此,确定平台位置的任何变化,例如,如由惯性传感器、GPS传感器等确定的。如果未注册此类更改,则会发生与以前的无线集线器(例如Wi-Fi

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

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

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

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

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

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

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

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

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

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

如上所述,在其他实施例中,系统可以被配置为可转换的平板电脑系统,其可以以至少两种不同的模式使用,即平板电脑模式和笔记本电脑模式。可转换系统可以具有两个面板,即显示面板和基础面板,以使得在平板电脑模式下,两个面板彼此叠置设置。在平板电脑模式下,显示面板朝外,可以提供传统平板电脑所具有的触摸屏功能。在笔记本模式下,两个面板可以以打开的翻盖结构布置。

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

在一些实施例中,内部盖子/显示器打开开关或传感器指示盖子何时关闭/打开,并且可以用于将系统置于“连接待机(Connected Standby)”状态或自动从“连接待机”状态唤醒。其他系统传感器可以包括用于内部处理器、存储器和皮肤温度监控的ACPI传感器,以根据感测到的参数更改处理器和系统的运行状态。

在一个实施例中,OS可以是实现“连接待机”的

图13示出了用于x4PCIe链路的具有每通道FEC方案的示例性flit定义。flit包括由flit级CRC方案和每通道FEC方案保护的一个或多个TLP和DLLP。在一些实施例中,如下面将更详细地讨论的那样,可以通过flit级FEC方案来保护flit。Flit 1300包括事务层分组符号1310、数据链路层分组符号1320、flit级CRC码符号1330和FEC符号1340。Flit 1300包括总共324个符号。在一些实施例中,符号的长度可以是1DW,但是在其他实施例中,符号可以是不同的长度。flit 1300中的324个符号包括288个携带事务层分组信息(TL0-TL287)的符号,4个携带数据链路层分组信息(DLL0-3)的符号,8个flit级CRC符号(CRC0-7)和24个FEC符号(12个校验符号(C)和12个奇偶校验符号(P))。八个CRC符号用于确保充分覆盖多个TL/DPP符号错误。来自单个TLP的信息可以跨越flit中的多个TL符号。例如,如果一个符号的长度为1DW,则flit 1350将需要8个TL符号来存储长度为8DW的TLP。

flit 1300跨通道1350(L0-L3)传输。也就是,在四个通道中的每一个上发送flit1300的不同部分。图13示出了沿着相邻通道传输的连续的TL、DLL和CRC符号,但是在其他实施例中,可以以不同的方式在通道之间分配符号。

flit 1300可以具有flit序列号,该序列号可以显式,隐式或机会性地指定。如果显式指定,则可以在flit中的保留位中编码flit序列号。如果隐式指定,则不会在链路上发送flit序列号,并且接收器可以以另一种方式来确定flit分组号,例如,通过对接收到的flit进行计数。如果机会性地指定,则可以将flit序列号作为DLLP分组中的有效负载发送,而DLLP分组则作为flit的一部分全部或部分地发送。在隐式发送flit序列号的一个示例中,CRC可以将flit序列号包括为例如CRC计算期间的CRC码中的连续位。因此,可以在接收端检测到任何掉落或重放的flit。

在flit1300中,为一个DLLP分配了四个一字节符号(DLL0-3)。在其他实施例中,来自多个DLLP的信息可以被携带在单个flit中。在其他实施例中,可以在连续的flit上构造DLLP。例如,在分配五个DLLP字节的flit格式中,四个DLLP字节可以承载一个DLLP,而来自四个连续flit的第五个DLLP字节可以贡献一个额外的DLLP。

flit级CRC码可保护flit内容减去FEC校验和奇偶校验符号。例如,在flit 1300中的符号CRC0-7中的flit级CRC代码保护flit 1300中的TL、DLL和CRC符号。每通道FEC方案保护在flit中跨一个通道传输的所有符号。例如,沿着通道L0-L3之一发送的六个FEC校验和奇偶校验符号保护沿着该通道发送的81个符号(324个flit符号/4通道)。FEC方案还采用交织。在flit 1300中采用的FEC方案使用三路交织,如每个符号的阴影所示。例如,没有阴影示出的校验和奇偶校验符号1360保护沿通道L3传输的也没有阴影示出的符号(TL3,TL7,TL11…TL287,CRC3,CRC7,校验/奇偶校验符号1360)。因此,在图13所示的FEC方案中,两个FEC符号(一个校验符号和一个奇偶校验符号)用于保护27个flit符号(沿通道L3/3路交织传输的81个符号)。在其他实施例中,作为具有每个通道更少的校验和奇偶校验位的FEC方案的替代交织方案(2路、4路等)可以用于实现期望的位错误率。

不同的flit定义可用于不同的链路宽度。图14示出了针对x8和x2 PCIe链路的具有每通道FEC方案的示例性帧定义。Flit 1400为PCIe x8链路定义了648个符号的flit格式。flit 1400包括包含事务层分组数据的1400个符号(TL0-TL599),包含数据链路层分组数据的4个符号(DLL0-3),8个flit级CRC符号(CRC0-7)和48个FEC符号(24个校验符号和24个奇偶校验符号)。648个符号跨八个通道(L0-L7)传输。如在flit 1300中一样,在一个通道中传输的六个FEC校验和奇偶校验符号使用3路交织来保护81个符号(648个符号/8个通道),每对FEC校验和奇偶校验符号对27个符号(81个符号/3路交织)。

flit 1450是PCIe x2链路的324符号flit定义。flit 1450包含300个带有事务层分组信息的符号(TL0-TL299),4个带有数据链路层分组信息的符号(DLL0-3),八个CRC符号(CRC0-7)和12个FEC符号(6个校验符号和6个奇偶校验符号)。324个符号跨两个通道(L0-L1)传输。在每个通道中传输的六个FEC校验和奇偶校验符号使用三路交织来保护162个符号(324个符号/2个通道),而每对FEC校验和奇偶校验符号对54个符号(162个符号/三路交织)进行保护。

Flit 1300、1400和1450示出了用于特定PCIe链路宽度的示例性flit定义。对于特定的PCIe链路,其他flit定义也是可能的。TL和/或DLL符号的数量可以从一个flit定义到另一个flit定义有变化,用于保护flit的flit级CRC符号的数量、用于保护通道的FEC符号的数量以及用于FEC方案的交织程度也可以从一个flit定义到另一个flit定义有变化。增加使用的flit级CRC符号和/或FEC符号的数量可以减少BER,但是以增加的开销为代价,并且因此以效率为代价。

在一些实施例中,可以在系统启动期间由操作系统或BIOS定义,确定或提供针对特定链路的flit定义。链路的flit定义可以存储在系统本地的软件或固件中,可以以硬件编码,也可以远程存储并在系统启动期间进行访问。特定链路的flit定义不必是静态的,并且可以在系统运行期间变化。例如,物理层、协议栈或操作系统可以接收特定链路的更新的flit定义,并且该链路可以在接收到更新的flit定义后的某个时刻开始使用更新的flit定义。可以响应各种事件提供更新的flit定义。例如,物理层可以监视链路性能,并向协议栈或操作系统发送信号,说明链路的BER太高,并且系统可以切换到以下的flit定义:具有带更多CRC字节的flit级别CRC方案,每条通道具有更多校验和奇偶校验位的每通道FEC方案,每个flit具有更多校验和奇偶校验位的flit级FEC方案或其组合。在另一示例中,系统可以确定更大的信息吞吐量,同时将BER保持在可接受的水平,并且可以使用提供更高传输效率的flit定义。在更新的flit定义中,通过增加flit中的TLP/DLLP分组符号的数量,或通过减少flit级CRC符号的数量和/或FEC校验/奇偶校验符号的数量,可以获得更高的效率。

图15示出了针对各种PCIe链路宽度的具有每道FEC方案的示例性flit定义的flit特性的表格。表1500分别显示了x4,x8和x2链路的链路1300、1400和1450的链路特性,以及x1和x16链路的可能链路定义的flit特性。所示的FEC延迟是针对PCIe第6代建议的传输速度下的近似延迟时间。较窄的链路(x1,x2)具有较高的FEC延迟,可通过分摊固定开销(flit级CRC符号和数据链路层分组信息)获得更高的效率,如图所示。可以选择给定链路宽度的不同flit大小,以权衡等待时间以提高效率。

基于flit的分组打包可以至少提供以下优点。首先,基于flit的分组打包消除了将LCRC附加到每个TLP的需要,因为flit在flit级受到CRC方案的保护。图13中的flit 1300包括来自288个TLP的TLP数据和仅八个flit级CRC符号。如果使用当前的PCIe协议通过链路发送,则这288个TLP将伴随288个LCRC。换句话说,一个flit不包含与flit中包含的每个TLP一起发送的CRC。使用基于flit的分组打包,链路层重试发生在flit级。在一个实施例中,可以用接收器重试失败的flit,该接收器存储在损坏或丢失的flit之后在接收器处接收到的成功发送的flit。在一些实施例中,通过接收包含要重发的flit的序列号的NAK DLLP,可以通知发送器未成功接收到所发送的flit。在一些实施例中,重试的flit可以通过相应的DLLP中的“重试flit”编码以及重试的flit的序列号来指示其正在重发。

第二,基于flit的分组打包允许采用保证的DLLP频率策略。在一个实施例中,在发送flit之后,发送器将接收DLLP确认分组,该DLLP确认分组指示flit在被发送之后不晚于n个flit被接收。在另一实施例中,接收器将在累积x个信用数之后不迟于m个flit向发送器发送提供信用更新的DLLP分组。相对于当前接收器存储需求,这样的策略可以减少接收器处的存储开销,这考虑了当前PCIe DLLP调度策略,并且必须处理诸如在最大有效负载大小TLP之后发送ACK或NAK DLLP的情况。

第三,由于flit定义为flit中的DLLP提供了保证的位置,因此对于给定的flit定义,将由于DLLP调度而导致的2-5%可变带宽损失交换为固定的带宽减少。例如,在flit1300的x4 flit定义中,由于DLLP开销而导致的带宽减少仅为1.2%(1/81)。

第四,消除了由于物理层添加到每个TLP的成帧信息的添加而导致的带宽损失,因为事务层分组信息位于flit中的固定位置,并且flit边界已知。即,对于作为flit一部分发送的每个TLP,没有将物理层成帧信息添加到TLP。

第五,因为特定的flit格式具有定义的长度,所以可以将当前PCIe协议中定期发送的同步头替换为周期性有序集(OS),例如SKP OS(跳过有序集)、EIOS(电空闲有序集)或EIEOS(电空闲退出有序集)。在一个实施例中,对于长度为10.25ns的flit,在600ppm时钟扩展的情况下,可以每72个flit发送一个周期性的OS。用周期性OS替换同步头可以回收至少一部分通过使用同步头消耗的带宽。在当前的PCIe协议格式中,同步头消耗大约1.5%的带宽。

图16A-16C示出了根据各种放置规则的示例性flit分组序列。flit定义定义了flit中哪些时隙或字段可以被TLP或DLLP信息占据,但是在某些实施例中,放置或打包规则用于确定要在flit中发送各个TLP/DLLP的TLP或DLLP信息所在的位置。图16A-16C示出了通过链路传输的48个flit分组的序列。分组在每一行中从左到右依次发送,第一行首先发送,第三行最后发送。每列为1DW宽,每组四列为4DW宽。

图16A示出了根据仅在每个对齐的4DW集合中可以驻留TLP报头信息或TLP有效负载(数据)信息的规则放置在flit中的TLP。从最左上的分组开始,前两个4DW集合包含第一TLP的报头信息1602(h0-h3)和有效负载信息1604(d0-d3)。接下来的两个4DW集合包含NULLTLP 1606和1608。第二行中的第一个4DW集合包含用于第二个仅报头的TLP的报头信息1610(h0-h2)。因为该第二TLP的报头只有3DW宽,所以第四个DW集合被IDL分组填充。空闲分组可用于填充4DW集合,其中分组的报头或有效负载信息的长度小于四个DW。沿着第二行继续,第二和第三4DW集合包含用于第三TLP的报头信息1612(h0-h2)和有效负载信息1614(d0)。因为此第三TLP的报头和有效负载信息少于4DW,所以第二和第三4DW集合将填充IDL分组。在第二行中的第四4DW集合填充有用于第四TLP的报头信息1616(h0-h2)和空闲分组。用于第四TLP的有效负载1618(d0-d1)被放置在第三行的前两个DW中,之后是两个空闲分组。第三行中的其余三个4DW集合包括用于第五TLP的报头信息1620(h0-h2),以及用于第六TLP的报头信息1622(h0-h3)和有效负载信息1624(d0-d3)。总之,六个TLP被打包到图16A所示的48个DW中。

图16B说明了根据每个对齐的4DW集合可以包含来自一个TLP的报头和数据信息的规则放置在flit中的TLP和DLLP,其中DLLP是机会性地放置的。从图16B的最左上分组开始,前两个4DW集合包含第一TLP的报头信息1642(h0-h3)和有效负载信息1644(d0-d3)。第三4DW集合包含NULL TLP 1646,并且第四4DW集合包含第一DLLP 1648,其后是三个IDL分组。移至第二行,第一4DW集合包含用于第二TLP的报头信息1650(h0-h2),其后是IDL分组。第二DW包含用于第三TLP的报头信息1652(h0-h2)和有效负载信息1653(d0)。第二行中的第三4DW集中的前三个DW填充有用于第四TLP的报头信息1654(h0-h2)和机会性地放置的第二DLLP 1655。第二行中的第四DW集合包含用于第四TLP的有效负载信息1656(d0-d1),最后两个DW包含空闲分组。继续最后一行,第一4DW集合包含第五TLP的报头信息1660(h0-h2)和一个空闲分组。第二和第三4DW集合包含用于第六TLP的报头信息1662(h0-h3)和有效负载信息1664(d0-d3)。最后的4DW集合包括用于第七TLP的报头信息1666(h0-h2)和有效负载信息1667(d0)。放置在图16B中的前六个TLP是与图16A中放置的相同的TLP。与图16B相关的较宽松的打包规则允许第七TLP和两个DLLP被另外放置在相同的48个DW中。

图16C示出了根据可以将TLP报头和有效负载信息放置在任何DW边界处的规则放置在flit中的TLP和DLLP,具有机会性的DLLP放置。放置与图16B中放置的相同的7个TLP和2个DLLP,第一TLP和第一DLLP被放置在图16C的第一行中,方式与图16B中的相同。移至第二行,第一4DW集合包含来自第二和第三TLP的信息:来自第二TLP的报头1690(h0-h2)和第三TLP的报头信息1691(h0-h2)的第一DW(h0)。第三TLP的剩余报头信息(h1-h2)被放置在第二4DW集合的前两个DW中。在第二4DW集合的最后一个DW和第三4DW集合的前两个DW中包含第四DLP的报头信息1693(h0-h2)。第四TLP的有效负载信息1694(d0-d1)被放置在第三4DW集合的后半部分中。第二行的最后4DW集包含第五TLP的报头信息1695(h0-h2)。第六DLP的报头信息1696(h0-h3)填充第二行的最后一个DW,并继续进入第三行的第一4DW集合的前三个DW。第六TLP的有效负载信息1697(d0-d3)填充第三行中的第一4DW集合的最后DW和第二4DW集合的前三个DW。最后一行的其余部分填充有第七TLP的报头信息1698(h0-h2)和有效负载信息1699(d0),第八TLP的第二DLLP 1681和报头信息1683(h0-h2)。允许将TLP报头和有效负载数据放置在任何DW中允许图16B中放置的七个TLP和两个DLLP可以更紧凑地放置-它们可容纳更少的五个DW,并允许放置第八TLP。

图17示出了PCIe 5.0TLP效率的表。表1700显示了最新版本PCIe协议下的TLP效率如何随事务大小而变化,大型有效负载的效率超过90%,而仅报头事务的效率下降到62.7%。无论链路宽度如何,这些效率都是相同的。图1500中的表1500示出了基于flit的分组打包,其在链路宽度上实现了从88.9%到94.4%的TLP效率,与跨事务大小的PCIe 5.0中的TLP效率的范围相比,是相对统一的效率。

图18A示出了在收发设备对中实现的示例性协议栈对。协议栈1800和1804可以是任何种类的协议或网络栈,例如PCIe栈。尽管本文中引用了PCIe堆栈,但是相同的概念可以应用于其他协议或网络栈。在一个实施例中,协议栈1800是PCIe协议栈,其包括事务层1810、数据链路层1820和物理层1830。通信端口可以被称为实现或包括协议栈1800或任何其他协议栈的模块、电路、接口或端口。因此,在一个实施例中,协议栈可以包括事务层模块、数据链路层模块和物理层模块。这样的协议栈也可以被认为包括事务层电路、数据链路层电路和物理层电路。当整体上参考协议栈时,协议栈可以称为协议栈电路或协议栈模块。

PCI Express使用分组在根联合体、交换机和端点之间传递信息。例如,要从发送设备1840发送到接收设备1850的信息从处理器1860(或发送设备1840的任何其他处理设备)发送到协议栈1800。事务层1810分组携带要从发送设备1840的处理器1860传递到接收设备1850的处理器1894的信息。随着在事务层1810处形成的分组沿协议栈向下移动到数据链路层1820然后到物理层1830,它们利用信息扩展以处理那些层上的分组。发送设备1840的物理层1830通过链路1854将分组发送到接收设备1850的物理层1870。在那里,发生反向过程,随着分组沿协议栈1800向下移动而添加到分组的信息随着分组沿协议栈1804向上移动而被剥离。协议栈1874的事务层1890将从发送设备1840发送的分组的有效负载传递到接收设备1850的处理器1894,从而导致消息从发送设备1840发送到接收设备1850。

在一个实施例中,事务层1810为处理器1860提供了到PCIe协议栈1800的接口。事务层1810负责在设备之间传递信息的事务层分组(TLP)的组装和拆卸。在从处理器1860接收到信息时,事务层1810组装一个或多个TLP分组,该一个或多个TLP分组将把信息传递给接收设备1850。TLP分组1842是TLP分组的一个实施例。TLP分组1842包括TLP报头1844和有效负载1846。其他信息可以包含在TLP分组中,例如端对端循环冗余码(ECRC),PCIe事务层可以为TLP分组计算的错误检测码。

数据链路层1820充当事务层1810和物理层1830之间的中间阶段。在一个实施例中,数据链路层1820的一个职责是提供一种可靠的机制,用于跨链路在设备之间交换事务层分组(TLP)。在一个实施例中,部分地通过确定用于TLP分组的分组序号并基于TLP分组的内容和分组的序号计算链路CRC(LCRC)值来实现可靠性机制。数据链路层1820将信息1852附加到包括分组序列号的TLP分组1842的头部,并且将LCRC值1856附加到TLP分组1842的尾部。数据链路层1820将具有附加信息的TLP 1842提交给物理层1830,以用于跨链路1854传输到接收设备1850。

在一个实施例中,沿着发送设备1840的协议栈1800向下移动,物理层1830包括逻辑子层1832和电子层1834,以将分组物理地传输到外部设备。在此,逻辑子层1832负责物理层1830的“数字”功能。就这一点而言,逻辑子层包括准备用于物理子层1834传输的传出信息的发送部分和用于在将接收的信息传递给数据链路层1820之前识别并准备接收的信息的接收部分。逻辑子层1832将附加的TLP分组与起始事务分组(STP)字段1866一起成帧,以生成在链路1854上传输的T已发送LP 1868。STP字段1866包括序列号1852、帧CRC位、TLP的长度和其他信息。

如本文所使用的,术语“事务层分组”是指由事务层1810生成的TLP,并且包括TLP报头和有效负载信息。术语“事务层分组信息”和“事务层分组数据”可以指的是TLP报头、TLP有效负载或两者。如本文所使用的,除非明确说明,否则术语“事务层分组”不包括添加到TLP的信息,诸如序列号、LCRC或由数据链路和物理层添加的成帧数据。类似地,除非明确说明,术语“数据链路层分组”是指不包含物理层添加的成帧数据的数据链路层分组。

电子层1834包括发送器1836和接收器1838。发送器1836由逻辑子层1832提供符号,发送器1836对其进行串行化,并通过链路1854发送到接收设备1850。通过接收设备1850向接收器1838提供在链路1854上发送的已接收序列化符号,并将接收到的信号转换成位流。将位流反序列化并提供给逻辑子层1832。在一个实施例中,使用8b/10b数据编码方案通过链路1854传输分组,其中,将八位数据作为十位符号传输。

尽管参考PCIe协议栈的实施例讨论了事务层1810、数据链路层1820和物理层1830,但是协议栈不限于此。在其他实施例中,协议栈1800可以具有与所示的那些不同的层和/或更少或更多的层。此外,在其他实施例中,图18A中所示的单独的层可以组合成单层,并且如图18A所示的单层可以组合成多层。在图18A中所示的协议栈中的任何层都可以实施为计算设备的操作系统,独立于操作系统的一个或多个软件应用程序的一部分,或在另一软件层上运行。图18A中所示的层可以以软件、硬件、固件或其组合来实现,并且可以可替代地被称为模块或电路系统(例如,“数据链路层模块”、“物理层电路系统”)或其组合。提到被编程以执行方法的计算机设备可以被编程为经由软件、硬件、固件或其组合来执行该方法。

物理层可以从发送器设备发起物理层分组(PLP),并在接收器设备的物理层终止。PLP可以包括EIOS、EIEOS、SKP OS和其他有序集。

图18B是根据本公开的实施例的示例PHY 1830和1970的示意图,其包括用于对有序集进行编码和解码的逻辑元件。物理层1830可以包括逻辑子层1832,逻辑子层1832包括有序集编码器逻辑1902。有序集编码器逻辑1902可以包括电路、状态机和/或其他逻辑,以对具有有序集的分组进行编码,如上所述。有序集编码器逻辑1902可以包括用于对各种类型的有序集进行编码的通用逻辑、电路、状态机等。在一些实施例中,可以使用对应的编码逻辑来对每种类型的OS进行编码。例如,可以使用SKP OS编码逻辑1904编码SKP OS,可以使用EIOS OS编码逻辑1906编码EIOS,可以使用EIEOS编码逻辑1908编码EIEOS,可以使用TSOS1910编码训练符号OS,等等。

数据块可以用SKP有序集、EIOS、EIEOS、训练(TS1/TS2)有序集,SKP末尾有序集或其他类型的有序集进行编码。OS编码逻辑1912可以将任何类型的OS编码为数据块,在这种情况下,可以使用公共状态机来执行数据块的编码。在一些实施例中,每种类型的OS可以由相应的编码逻辑来编码,例如,利用唯一状态机。也可以使用通用编码器和特定OS编码器的组合。

OS编码逻辑1902还可以包括移位寄存器,例如线性功能移位寄存器(LFSR)1912。LFSR1912可以使用逻辑电路来实现,例如包括异或或(XOR)门的电路或其他电路。LFSR1912可以用于在对分组进行编码之后并且在将编码的位发送到PHY之前校验位。

接收设备1850可以包括物理层1870,该物理层还包括逻辑子层1872。逻辑子层1872包括OS解码器逻辑1922。OS解码器逻辑1922可以从接收到的分组中解码OS位。OS解码器1922可以包括公共状态机(和/或其他逻辑),用于从接收到的分组中解码OS位。在一些实施例中,每种类型的OS可以由对应的解码器逻辑来解码。例如,可以使用SKP OS解码逻辑1924解码SKP OS,可以使用EIOS OS解码逻辑1926解码EIOS,可以使用EIEOS解码逻辑1928解码EIEOS,可以使用TSOS 1930解码训练符号OS,等等。

OS解码逻辑1922还可以包括移位寄存器,例如线性功能移位寄存器(LFSR)1932。LFSR1932可以使用逻辑电路来体现,例如包括异或或(XOR)门的电路或其他电路。LFSR1932可用于针对期望位校验分组中接收到的OS位以发现传输错误。例如,当在一定间隔内校验8个SKP OS位中的5个相对于期望位准确时,LFSR 1932可用于确定接收到的分组中是否发生了位错误。

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

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

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

在一个实施例中,措辞“用于”、“被配置为”的使用是指布置,放在一起,制造,提供以售卖,进口和/或设计执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有进行操作的装置或其元件仍‘被配置为’执行指定任务,前提是其被设计,耦合和/或互连来执行所述指定任务。纯粹作为说明性的示例,逻辑门可以在操作期间提供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是一种装置,包括用于发送数据的端口;和耦合到端口的链路。该端口包括用于对物理层分组进行解码的物理层设备(PHY),物理层分组是通过链路接收的,该物理层分组包括与第一有序集相对应的第一位序列和与第二有序集相对应的第二位序列,第一位序列与第二位序列紧邻。

示例2可以包括示例1的主题,其中,所述第一有序集以预定的有序集间隔被接收。

示例3可以包括示例2的主题,其中,所述预定的有序集间隔在流控制单位(flit)之后出现。

示例4可以包括示例3的主题,其中,预定的有序集间隔出现在两个flit之间。

示例5可以包括示例1-4中任何一个的主题,其中第一有序集包括八个字节,第二有序集包括八个字节。

示例6可以包括示例5的主题,该端口用于读取第一有序集的八个字节;并校验八个字节中的五个是否与预期的有序集类型匹配。

示例7可以包括示例1-6中任何一个的主题,该端口用于确定八个字节中的五个与预期的有序集类型不匹配;并进入链路恢复状态。

示例8可以包括示例1-6中任何一个的主题,该端口用于确定八个字节中的五个与电空闲有序集(EIOS)相匹配;并在第二有序集之后进入低功率状态。

示例9可以包括示例1-6中任何一个的主题,该端口用于确定八个字节中的五个与电空闲退出有序集(EIEOS)相匹配;并在第二有序集之后进入链路恢复状态。

示例10可以包括示例1-6中任何一个的主题,该端口用于确定八个字节中的五个与跳过有序集(SKP OS)相匹配;读取第二有序集;并从第二有序集中确定有序集的类型。

示例11可以包括示例10的主题,该端口用于:确定第二有序集与跳过端有序集(SKP_END OS)相匹配;将跟随SKP_END OS的接下来的八个字节标识为PHY有效负载;将跟随PHY有效负载的接下来的八个字节标识为复制的PHY有效负载;并确定数据流跟在跟随SKP_END OS的PHY有效负载之后。

示例12可以包括示例10的主题,该端口用于:确定第二有序集与SKP OS匹配;继续针对SKP OS校验跟随第二有序集的字节;确定超过56个字节包括SKP OS;并使链路进入恢复状态。

示例13可以包括示例10的主题,该端口用于:确定第二有序集与SKP OS匹配;确定第二有序集之后的八个字节中的五个字节与跳过端有序集(SKP_END OS)相匹配;将跟随SKP_END OS的接下来的八个字节标识为PHY有效负载;并且确定数据流跟在跟随SKP_ENDOS之后的PHY有效负载之后。

示例14可以包括示例13的主题,该端口用于将跟随PHY有效负载的接下来的八个字节标识为复制的PHY有效负载。

示例15可以包括示例1的主题,其中所述第一有序集包括八个字节,并且所述第二有序集包括八个字节,所述第一和第二有序集包括电空闲退出有序集(EIEOS);所述端口用于:接收另外两个EIEOS;接收用于链路训练的32个训练序列有序集。

示例16可以包括示例15的主题,其中每个训练序列有序集包括第一部分和第二部分,所述第一部分包括八个符号,并且所述第二部分包括八个符号,每个符号包括一个字节,第一部分在每个符号中包含与第二部分相同的信息。

示例17是一种方法,包括:在端口处接收与包括八个字节的第一有序集相对应的第一位序列;在该端口处,接收与包括八个字节的第二有序集相对应的第二位序列,该第一位序列与第二位序列紧邻,该第一有序集与第二有序集相同;将第一有序集的一部分与预期有序集进行比较;并基于比较确定有序集的类型。

示例18可以包括示例17的主题,其中,接收第一位序列包括以预定的有序集间隔接收第一位序列。

示例19可以包括示例18的主题,其中,预定的有序集间隔发生在流控制单位(flit)之后。

示例20可以包括示例17-19的主题,该主题还包括:通过端口读取第一有序集的八个字节;并校验八个字节中的五个是否与预期的有序集类型匹配。

示例21可以包括示例20的主题,还包括:确定八个字节中的五个与预期的有序集类型不匹配;并进入链路恢复状态。

示例22可以包括示例20的主题,该端口用于:确定八个字节中的五个与电空闲有序集(EIOS)相匹配;在第二有序集之后进入低功率状态。

示例23可以包括示例20的主题,该端口用于:确定八个字节中的五个与电空闲退出有序集(EIEOS)相匹配;以及在第二有序集之后进入链路恢复状态。

示例24可以包括示例20的主题,该端口用于:确定八个字节中的五个与跳过有序集(SKP OS)相匹配;读取第二有序集;以及从第二有序集中确定有序集类型。

示例25可以包括示例24的主题,该端口用于:确定第二有序集与跳过端有序集(SKP_END OS)相匹配;将跟随SKP_END OS的接下来的八个字节标识为PHY有效负载;将跟随PHY有效负载的接下来的八个字节标识为复制的PHY有效负载;并确定数据流跟在跟随SKP_END OS的PHY有效负载之后。

示例26可以包括示例24的主题,该端口用于:确定第二有序集与SKP OS匹配;继续针对SKP OS校验跟随第二有序集的字节;确定超过56个字节包括SKP OS;并导致链路进入恢复状态。

示例27可以包括示例24的主题,该端口用于:确定第二有序集与SKP OS匹配;确定第二有序集之后的八个字节中的五个字节与跳过端有序集(SKP_END OS)相匹配;将跟随SKP_END OS的接下来的八个字节标识为PHY有效负载;确定数据流跟在跟随SKP_END OS的PHY有效负载之后。

示例28可以包括示例17的主题,其中第一有序集包括八个字节,第二有序集包括八个字节,第一和第二有序集包括电空闲退出有序集(EIEOS);该方法还包括:接收两个附加的EIEOS;接收三十二个训练序列有序集,用于链路训练;其中每个训练序列有序集包括第一部分和第二部分,第一部分包括八个符号,第二部分包括八个符号,每个符号包括一个字节,第一部分在每个符号中包含与第二部分相同的信息。

示例29是一种系统,该系统包括:具有下游端口的主机设备;包括上游端口的链路伙伴;连接下游端口和上游端口的链路。所述下游端口在预定间隔内发送包括第一有序集的第一八字节集合和包括第二有序集的第二八字节集合,该第一有序集与第二有序集相同。上游端口接收第一八字节集合;确定在预期的有序集间隔内接收到第一八字节集合;并根据第一八字节集合确定有序集类型。

示例30可以包括示例29的主题,其中,以预定的有序集间隔接收第一有序集。

示例31可以包括示例30的主题,其中预定的有序集间隔发生在流控制单位(flit)之后。

示例32可以包括示例31的主题,其中,预定的有序集间隔出现在两个flit之间。

示例33可以包括示例29-32中任何一个的主题,上游端口确定八个字节中的五个与预期的有序集类型不匹配;并进入链路恢复状态。

示例34可以包括示例29-32中任何一个的主题,上游端口确定八个字节中的五个与电空闲有序集(EIOS)相匹配;并在第二有序集之后进入低功率状态。

示例35可以包括示例29-32中任何一个的主题,上游端口确定八个字节中的五个与电空闲退出有序集(EIEOS)相匹配;并在第二有序集之后进入链路恢复状态。

示例36可以包括示例29-32中任何一个的主题,上游端口确定八个字节中的五个与跳过有序集(SKP OS)相匹配;读取第二有序集;并从第二有序集中确定有序集类型。

示例37可以包括示例36的主题,上游端口用于确定第二有序集与跳过端有序集(SKP_END OS)相匹配;将跟随SKP_END OS的接下来的八个字节标识为PHY有效负载;将跟随PHY有效负载的接下来的八个字节标识为复制的PHY有效负载;并确定数据流跟在跟随SKP_END OS的PHY有效负载之后。

示例38可以包括示例36的主题,上游端口用于确定第二有序集与SKP OS匹配;继续校验SKP OS的第二有序集后的字节;确定超过56个字节包括SKP OS;并使链路进入恢复状态。

示例39可以包括示例29的主题,其中第一有序集包括八个字节,第二有序集包括八个字节,第一和第二有序集包括电空闲退出有序集(EIEOS);上游端口接收另外两个EIEOS;接收用于链路训练的32个训练序列有序集。

示例40可以包括示例39的主题,其中每个训练序列有序集包括第一部分和第二部分,第一部分包括八个符号,第二部分包括八个符号,每个符号包括一个字节,第一部分在每个符号中包含与第二部分相同的信息。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号