用于执行链路训练与均衡的装置、系统、和方法

文档序号:6540711阅读:143来源:国知局
用于执行链路训练与均衡的装置、系统、和方法
【专利摘要】本发明涉及用于执行链路训练与均衡的装置、系统、和方法。一种系统和方法包括,响应于第一组件和第二组件经受链路训练与均衡过程,第二组件沿着通信链路的至少一个信道经由第一传输逻辑而将第一数据集传送到第一组件。第一组件和第二组件是链路伙伴。第一数据集进一步包括在第一组件的第一存储单元中存储的全开值和低频值。第一组件存储根据全开值和低频值所计算的第一系数集。第二组件将所计算的第一系数集应用于第二组件的第一传输逻辑。
【专利说明】用于执行链路训练与均衡的装置、系统、和方法

【技术领域】
[0001] 本公开涉及计算系统,并且特别地(但不排他地)涉及用于改善链路训练与均衡过 程的技术。

【专利附图】

【附图说明】
[0002] 图1是图示用于包括多核处理器的计算系统的框图的实施例的示意图。
[0003] 图2是图示包括外围组件互连高速(PCIe)兼容架构的计算系统的实施例的示意 图。
[0004] 图3是图示包括分层栈的PCIe兼容互连架构的实施例的示意图。
[0005] 图4是图示在互连架构内生成或接收的PCIe兼容请求或分组的实施例的示意图。
[0006] 图5是图示PCIe串行点对点构造(fabric)的实施例的示意图。
[0007] 图6是图示具有最佳的预设的误比特率(BER)眼图以及具有优化的发送器系数的 BER眼图的示意图。
[0008] 图7示出按照本公开的实施例的用于链路训练与均衡的方法。
[0009] 图8是图示PCIe链路训练与均衡过程的阶段0的实施例的示意图。
[0010] 图9是图示PCIe链路训练与均衡过程的阶段1的实施例的示意图。
[0011] 图10是图示PCIe链路训练与均衡过程的阶段0的实施例的示意图。
[0012] 图11是图示PCIe链路训练与均衡过程的阶段1的实施例的示意图。
[0013] 图12是图示PCIe链路训练与均衡过程的阶段2的实施例的示意图。
[0014] 图13是图示PCIe链路训练与均衡过程的常规的阶段3过程的示意图。
[0015] 图14A-14B示出按照本公开的实施例的针对用于链路训练与均衡的方法的块。
[0016] 图15是根据本公开的实施例的经受链路训练与均衡过程的两个设备的显示。
[0017] 图16是图示按照本公开的组件的系统的示意图。

【具体实施方式】
[0018] 在下面的描述中,阐述了许多的特定细节,诸如特定的类型的处理器和系统配置、 特定的硬件结构、特定的架构和微型架构细节、特定寄存器配置、特定指令类型、特定系统 组件、特定测量/高度、特定处理器流水线阶段和操作等等的示例,以便提供对本公开的彻 底的了解。然而,对于本领域技术人员明显的是,不必采用这些特定细节来实践本公开。在 其他的实例中,没有详细描述诸如特定和替换处理器架构、用于描述的算法的特定逻辑电 路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定生产技术和材料、特定编译器 实施方式、代码中的算法的特定表达、特定掉电和选通技术/逻辑之类的众所周知的组件 或方法和计算机系统的其他特定操作细节,以免不必要地使本公开晦涩难懂。
[0019] 尽管可以参考诸如计算平台或微处理器中的特定集成电路中的能量节约和能量 效率来描述以下实施例,但其他的实施例可适用于其他类型的集成电路和逻辑设备。类 似的技术和在此描述的实施例的教导可以应用于也可以受益于良好能量效率和能量节 约的其他类型的电路或半导体设备。例如,所公开的实施例不局限于台式计算机系统或 Ultrabooks?。并且也可以被用于诸如手持设备、平板机、其他轻薄笔记本、片上系统(SOC) 设备之类的其他设备以及嵌入式应用中。手持设备的一些示例包括蜂窝电话、网际协议设 备、数字式照相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字 信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换 机,或可以执行以下讲授的功能和操作的任何其他系统。此外,在此描述的装置、方法和系 统不局限于物理计算设备,而是也可以涉及用于能量节约和效率的软件优化。如将根据以 下的描述明显的是,在此描述的方法、装置和系统的实施例(不管是设计硬件、固件、软件还 是其组合)是与性能考虑进行平衡的"绿色技术"未来所不可缺少的。
[0020] 由于计算系统在发展,其中的组件变得更复杂。结果,在组件之间进行耦合和通信 的互连架构的复杂度也在增加,以保证满足用于最优组件操作的带宽要求。此外,不同的市 场区隔要求互连架构的不同方面适合市场的需要。例如,服务器要求较高的性能,而移动生 态系统有时能够为了节电而牺牲总体性能。然而,大多数构造的单一目的是提供具有最大 节电的最高可能性能。以下,对许多互连进行讨论,其将潜在地受益于在此描述的本公开的 各方面。
[0021] 关于图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任 何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、 手持处理器、应用处理器、协处理器、片上系统(S0C)或运行代码的其他设备。在一个实施例 中,处理器100包括至少两个核--核101和102,其可能包括不对称的核或对称的核(所图 示的实施例)。然而,处理器100可以包括可以是对称的或不对称的任何数量的处理元件。
[0022] 在一个实施例中,处理元件指的是支持软件线程的硬件或逻辑。硬件处理元件的 示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、 核,和/或能够保持诸如执行状态或架构状态之类的处理器的状态的任何其他元件。换句 话说,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用之类的代码 或其他代码独立地相关联的任何硬件。物理处理器(或处理器插槽)典型地指的是集成电 路,其潜在地包括任何数量的其他处理元件,诸如核或硬件线程。
[0023] 核往往指的是位于集成电路上的能够维持独立的架构状态的逻辑,其中每个独立 地维持的架构状态与至少一些专用的执行资源相关联。与核形成对比,硬件线程典型地指 的是位于集成电路上的能够维持独立的架构状态的任何逻辑,其中该独立地维持的架构状 态共享对执行资源的访问。可以看出,当某些资源被共享并且其它资源专用于一种架构状 态时,硬件线程和核的命名法之间的线发生重叠。然而,经常是,由操作系统将核和硬件线 程视为独立的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
[0024] 如图1所图示的,物理处理器100包括两个核--核101和102。这里,核101 和102被考虑为对称的核,S卩,具有相同的配置、功能单元和/或逻辑的核。在另一个实施 例中,核101包括乱序处理器核,而核102包括有序处理器核。然而,可以从诸如本机核 (native core)、软件管理的核、适合于执行本机指令集架构(ISA)的核、适合于执行转换的 指令集架构(ISA)的核、协同设计的核之类的任何类型的核或其他已知核中单独地选择核 101和102。在异构核环境(即不对称的核)中,可以利用像二进制转换的某种形式的转换来 调度或执行一个或两个核上的代码。又进行进一步的讨论,以下更加详尽地描述核101中 图示的功能单元,这是因为在所描绘的实施例中核102中的单元以类似方式操作。
[0025] 如所描绘的,核101包括两个硬件线程101a和101b,其也可以被称为硬件线程槽 101a和101b。因此,诸如操作系统之类的软件实体在一个实施例中潜在地把处理器100视 为四个分离处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。至于 提及以上时,第一线程与架构状态寄存器l〇la相关联,第二线程与架构状态寄存器101b相 关联,第三线程可以与架构状态寄存器l〇2a相关联,并且第四线程可以与架构状态寄存器 102b相关联。这里,每一个架构状态寄存器(101a、101b、102a和102b)可以被称为处理元 件、线程槽,或线程单元,如上所述。如所图示的,在架构状态寄存器l〇lb中复制架构状态 寄存器101a,所以能够为了逻辑处理器101a和逻辑处理器101b而存储单独的架构状态/ 上下文。在核101中,也可以对于线程l〇la和101b而复制诸如分配器和更名器块130中 的指令指针和更名逻辑之类的其他的较小资源。可以通过分割来共享诸如重排序/回收 (retirement)单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器以及队列之类的 一些资源。潜在地对诸如通用内部寄存器、页表基址寄存器(一个或多个)、低级别数据高速 缓存和数据TLB 115、执行单元(一个或多个)140和乱序单元135的各部分之类的其他资源 进行充分地共享。
[0026] 处理器100往往包括其他的资源,其可以由处理元件充分地共享、通过分割由处 理元件共享,或专用于处理元件。在图1中,图示出具有处理器的说明性逻辑单元/资源的 纯示例性处理器的实施例。注意到,处理器可以包括或省略这些功能单元中的任何一项,以 及包括没有描绘的任何其他已知功能单元、逻辑或固件。如所图示的,核101包括简单化 的、有代表性的乱序(〇〇〇)处理器核。但是可以在不同的实施例中利用有序处理器。〇〇〇核 包括用于预测要被执行/采取的分支的分支目标缓冲器120以及用于存储用于指令的地 址转换条目的指令转换缓冲器(I-TLB) 120。
[0027] 核101进一步包括耦合到取出单元120的、用于解码所取出的元素的解码模块 125。在一个实施例中,取出逻辑包括分别地与线程槽101a、101b相关联的单独的定序器。 通常,核101与定义/指定可在处理器100上执行的指令的第一 ISA相关联。作为第一 ISA 的一部分的机器代码指令往往包括对要被执行的指令或操作进行引用/指定的指令的一 部分(被称为操作码)。解码逻辑125包括电路,该电路从它们的操作码中识别这些指令,并 且在用于第一 ISA所定义的处理的流水线中传递经解码的指令。例如,如以下更详细地讨 论的,在一个实施例中,解码器125包括被设计为或适于识别诸如事务性指令之类的特定 指令的逻辑。由于由解码器125进行的识别,架构或核101采取特定、预定义的动作来执行 与适当的指令相关联的任务。重要的是注意到,可以响应于单个或多个指令(其中一些可以 是新的或旧的指令)来执行在此描述的任务、框、操作和方法中的任何一项。请注意,在一个 实施例中,解码器126识别相同的ISA (或其子集)。替换地,在异构核环境中,解码器126 识别第二ISA (为第一 ISA的子集或者不同的ISA)。
[0028] 在一个示例中,分配器和更名器框130包括用于保留诸如用于存储指令处理结果 的寄存器文件之类的资源的分配器。然而,线程l〇la和101b是潜在地能够进行乱序执行, 其中分配器和更名器框130也保留其他的资源,诸如用于跟踪指令结果的重排序缓冲器。 单元130也可以包括寄存器更名器,用于将程序/指令引用寄存器更名到处理器100内部 的其他寄存器。重排序/回收单元135包括诸如如上所述的重排序缓冲器、加载缓冲器和 存储缓冲器之类的组件,以支持乱序执行以及乱序执行的指令的稍后的有序回收。
[0029] 在一个实施例中,调度器和执行单元(一个或多个)框140包括调度器单元,用于调 度执行单元上的指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度 浮点指令。还包括与执行单元相关联的寄存器文件来存储信息指令处理结果。示例性执行 单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其 他已知执行单元。
[0030] 较低级别数据高速缓存和数据转换缓冲器(D-TLB) 150耦合到执行单元(一个或 多个)140。数据高速缓存将存储潜在地保持在存储器一致性状态中的诸如数据操作数之类 的最近使用/操作的元素。D-TLB将存储最近的虚拟/线性地址至物理地址转换。作为特 定示例,处理器可以包括将物理存储器分为多个虚拟页的页表结构。
[0031] 这里,核101和102共享对诸如与片上接口 110相关联的二级高速缓存之类的较 高级别或更远的高速缓存的访问。注意到,较高级别或更远指的是相对于所述执行单元(一 个或多个)增加或进一步远离的高速缓存级别。在一个实施例中,较高级别的高速缓存是最 后级别的高速缓存--处理器100上的存储器分级体系中的最后的高速缓存一诸如二级 或三级数据高速缓存。然而,较高级别高速缓存不限于此,因为其可以与指令高速缓存相关 联或包括指令高速缓存。作为代替,跟踪高速缓存一一种类型的指令高速缓存可以耦合 在解码器125之后,用于存储最近解码的跟踪。这里,指令潜在地指的是宏指令(即由解码 器识别的通用指令),其可以解码为许多微指令(微操作)。
[0032] 在所描绘的配置中,处理器100还包括片上接口组件110。历史上,以下更详细地 描述的存储器控制器已经被包括在处理器100之外的计算系统中。在该场景中,片上接口 11将与诸如系统存储器175、芯片组(往往包括连接到存储器175的存储器控制器集线器以 及连接外围设备的I/O控制器集线器)、存储器控制器集线器、北桥之类的处理器100以外 的设备或其他的集成电路进行通信。并且,在该场景中,总线105可以包括任何已知的互 连,诸如多点分支总线、点到点互连、串行互连、并行总线、一致性(例如高速缓存一致性)总 线、分层协议架构、差分总线和GTL总线。
[0033] 存储器175可以专用于处理器100或与系统中的其他设备共享。存储器175的常 见示例类型包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知存储设备。注意到,设 备180可以包括图形加速器、处理器或耦合到存储器控制器集线器的卡、耦合到I/O控制器 集线器的数据存贮器、无线收发器、闪存设备、音频控制器、网络控制器或其他的已知设备。
[0034] 然而,最近,随着更多逻辑和设备被集成在诸如S0C之类的单个管芯上,可以在处 理器100上合并这些设备中的每一个。例如,在一个实施例中,存储器控制器集线器与处理 器100位于相同的封装和/或管芯上。这里,核的一部分(核上( 〇n-c〇re)部分)110包括用 于与诸如存储器175或图形设备180之类的其他设备对接的一个或多个控制器。包括用于 与这样的设备对接的互连和控制器的配置往往被称为核上(或非核(un-core)配置)。举例 来说,片上接口 110包括用于片上通信的环形互连和用于片外通信的高速串行点到点链路 105。而在S0C环境中,可以在单个管芯或集成电路上集成诸如网络接口、协处理器、存储器 175、图形处理器180以及任何其他已知计算机设备/接口之类的甚至更多的设备,以提供 具有高功能和低功耗的较小形状因数。
[0035] 在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编 译、转换和/或优化应用代码176,以支持在此描述的装置和方法或与之对接。编译器往往 包括程序或程序集来将源文本/代码转换为目标文本/代码。通常,在多个阶段和多遍中 完成利用编译器进行程序/应用代码的编译,以将高级编程语言代码转换为低级机器或汇 编语言代码。然而,仍然可以利用单遍编译器来用于简单编译。编译器可以利用任何已知编 译技术并且执行任何已知编译器操作,诸如词法分析、预处理、解析、语义分析、代码生成、 代码变换以及代码优化。
[0036] 较大的编译器往往包括多个阶段,但是最经常的是,这些阶段被包括在两个通用 阶段内:(1)前端,即,通常在其中可以发生语法处理、语义处理和一些变换/优化,以及 (2)后端,S卩,通常在其中可以发生分析、变换、优化和代码生成。一些编译器参看中部,其说 明编译器的前端与后端之间的划定的模糊。结果,对编译器的插入、关联、生成或其他操作 的引用可以发生在上述的编译器的阶段或遍以及任何其他的已知阶段或遍中的任何一项 中。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数等等, 诸如在编译的前端阶段中插入调用/操作,并且然后在变换阶段期间将调用/操作变换为 较低级别代码。注意到,在动态编译期间,编译器代码或动态优化代码可以插入这样的操 作/调用以及优化用于在运行时间期间执行的代码。作为特定说明性示例,可以在运行时 间期间动态地优化二进制代码(已经编译的代码)。这里,程序代码可以包括动态优化代码、 二进制代码,或其组合。
[0037] 类似于编译器,诸如二进制转换器之类的转换器静态地或动态地转换代码,以优 化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的提及可以 指的是:(1)动态地或静态地执行编译器程序(一个或多个)、优化代码优化器或转换器,以 编译程序代码、维持软件结构、执行其他操作、优化代码或者转换代码;(2)执行包括诸如 已经被优化/编译的应用代码之类的操作/调用的主程序代码;(3)执行诸如与主程序代 码相关联的库之类的其他的程序代码,以维持软件结构、执行其他软件有关的操作,或优化 代码;或者(4)其组合。
[0038] 一种互连构造架构包括外部组件互连(PCI)高速(PCIe)架构。PCIe的主要目标 将是使得来自不同厂商的组件和设备能够在开放式架构中互操作、跨多个市场区隔、客户 端(桌上型和移动)、服务器(标准和企业)以及嵌入式和通信设备。PCI高速是为各式各样 的未来计算和通信平台定义的高性能、通用互连I/O互连。诸如其使用模型、加载-存储架 构和软件接口之类的一些PCI属性已经通过其修订被维持,而先前的并行总线实施方式已 经由高度可伸缩的、完全串行接口替代。PCI高速的最新近版本利用点到点互连、基于交换 机的技术和封包化协议中的进展,以提供新级别的性能和特征。功率管理、服务质量(QoS)、 热插拔/热切换支持、数据完整性和错误处理都是由PCI高速所支持的一些高级特征。
[0039] 参考图2,图示由互连一组组件的点对点链路所构成的构造的实施例。系统200包 括耦合到控制器集线器215的处理器205和系统存储器210。处理器205包括任何处理元 件,诸如微处理器、主机处理器、嵌入式处理器、协处理器、或其他处理器。处理器205通过 前端总线(FSB) 206耦合到控制器集线器215。在一个实施例中,FSB 206是如以下所描述 的串行点对点互连。在另一个实施例中,链路206包括兼容于不同互连标准的串行差分互 连架构。
[0040] 系统存储器210包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV) 存储器、或者可由系统200中的设备访问的其他存储器。系统存储器210通过存储器接口 216耦合到控制器集线器215。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双 通道DDR存储器接口、以及动态RAM (DRAM)存储器接口。
[0041] 在一个实施例中,控制器集线器215是外围组件互连高速(PCIe或PCIE)互连层 级中的根集线器、根联合体(root complex)、或根控制器。控制器集线器215的示例包括 芯片集、存储控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥、以及根控制器/集 线器。通常,术语"芯片集"指的是两个物理上分离的控制器集线器,即耦合到互连控制器 集线器(ICH)的存储控制器集线器(MCH)。注意,目前的系统通常包括与处理器205集成的 MCH,而如以下所描述的,控制器215采用类似的方式与I/O设备进行通信。在一些实施例 中,端对端路由通过根联合体设备而可选地支持。
[0042] 本文中,控制器集线器215通过串行链路219耦合到交换器/桥220。输入/输出 模块217和221 (也可以称为接口 /端口 217和221)包括/实现分层协议栈以提供控制器 集线器215与交换器220之间的通信。在一个实施例中,多个设备能够耦合到交换器220。
[0043] 交换器/桥220将分组/消息向上游地(S卩,朝向根联合体而沿层级向上)从设 备225路由到控制器集线器215,以及向下游地(S卩,远离根控制器而沿层级向下)从处理 器205或系统存储器210路由到设备225。在一个实施例中,交换器220被称为多个虚拟 PCI-至-PCI桥设备的逻辑组装件。设备225包括耦合到电子系统的任何内部或外部的设 备或组件,诸如I/O设备、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬盘驱 动器、储存设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设 备、通用串行总线(USB)设备、扫描器、以及其他输入/输出设备。通常在PCIe用语中,诸 如,将设备称为端点。尽管未具体示出,但是设备225可以包括至PCI/PCI-X桥的PCIe以 支持传统或其他版本PCI设备。通常PCIe中的端点设备被分类为传统、PCIe、或根联合体 集成端点。
[0044] 图形加速器230也通过串行链路232耦合到控制器集线器215。在一个实施例中, 图形加速器230耦合到MCH,所述MCH耦合到ICH。然后,交换器220并且因而I/O设备225 耦合到ICH。I/O模块231和218也实现分层协议栈以在图形加速器230与控制器集线器 215之间通信。与以上的MCH讨论类似,图形控制器或图形加速器230自身可以集成在处理 器205中。
[0045] 转向图3,图示了分层协议栈的实施例。分层协议栈300包括任何形式的分层通信 栈,诸如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或其他分层栈。尽管接 在下面的参考图2-5的讨论与PCIe栈相关,但是相同的概念可以应用于其他互连栈。在一 个实施例中,协议栈300是包括事务层305、链路层310、和物理层320的PCIe协议栈。诸 如图2中的接口 217、218、221、222、226、和231之类的接口可以被表示为通信协议栈300。 表示为通信协议栈也可以称为实现/包括协议栈的模块或接口。
[0046] PCI高速使用分组来在组件之间传送信息。分组形成于事务层305和数据链路层 310中,以将信息从发送组件载送到接收组件。当所发送的分组流过其他层时,利用在那些 层处处理分组所必需的附加信息来对所述分组扩展。在接收侧处,发生相反的过程,并且使 分组从其物理层320表示转换为数据链路层310表示,并最终(针对事务层分组)转换为可 以由接收设备的事务层305处理的形式。
[0047] 事务层 在一个实施例中,事务层305提供设备的处理核与互连架构(诸如,数据链路层310和 物理层320)之间的接口。就这点而言,事务层305的主要职责是对分组进行组装和拆卸 (即,事务层分组、或TLP)。事务层305通常管理用于TLP的基于信用的流控制。PCIe实现 分离事务,即具有由时间所分开的请求和响应的事务,从而允许链路承载其他业务而目标 设备收集用于响应的数据。
[0048] 另外,PCIe利用基于信用的流控制。在该方案中,设备通告用于事务层305中的 每个接收缓冲器的信用的初始量。链路的相对端处的外部设备(诸如,图1中的控制器集线 器115)对由每个TLP所消耗的信用数进行计数。如果事务不超过信用限制,则可以发送该 事务。在接收到响应时,恢复信用量。信用方案的优势在于如果不遭遇信用限制,那么信用 返回的延迟不影响性能。
[0049] 在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/ 输出地址空间、和消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多 个以将数据向/从存储器映射的位置转移。在一个实施例中,存储器空间事务能够使用两 个不同的地址格式,例如,诸如32位地址的短地址格式、或诸如64位地址的长地址格式。配 置空间事务被用来访问PCI设备的配置空间。对于配置空间的事务包括读取请求和写入请 求。消息空间事务(或简单地,消息)被定义成支持PCIe代理之间的带内通信。
[0050] 因而,在一个实施例中,事务层305组装分组头/有效载荷306。用于目前的分组 头/有效载荷的格式可以在PCIe规范网站处的PCIe规范中找到。
[0051] 快速参考图4,图示了 PCIe事务描述符的实施例。在一个实施例中,事务描述符 400是用于载送事务信息的机制。就这点而言,事务描述符400支持对系统中事务的标识。 其他可能的使用包括追踪对默认事务排序的修改以及将事务与信道关联。
[0052] 事务描述符400包括全局标识符字段402、属性字段404和信道标识符字段406。 在所图示的示例中,全局标识符字段402被描绘为包括局部事务标识符字段408和源标识 符字段410。在一个实施例中,全局事务标识符402对于所有未解决的请求而言是唯一的。
[0053] 根据一个实现,局部事务标识符字段408是由请求代理所生成的字段,并且其对 于所有未解决的对于该请求代理而言要求完成的请求而言是唯一的。此外,在该示例中,源 标识符410唯一地标识PCIe层级内的请求者代理。因而,与源ID 410 -起,局部事务标识 符408字段提供层级域内的事务的全局标识。
[0054] 属性字段404规定事务的特性和关系。就这点而言,属性字段404可能被用来提 供允许对事务的默认处理进行修改的附加信息。在一个实施例中,属性字段404包括优先 级字段412、预留字段414、排序字段416、和不监听(no-snoop)字段418。本文中,优先级 子字段412可以由发起者来修改以给事务分配优先级。预留属性字段414为将来、或厂商 定义的使用而预留。使用优先级或安全属性的可能使用模型可以使用预留的属性字段来实 现。
[0055] 在该示例中,排序属性字段416被用来供应传达可以修改默认排序规则的排序类 型的可选信息。根据一个示例性实现,排序属性"〇"表示应用默认的排序规则,其中排序属 性"1"表示松散性排序,其中写入可以在相同的方向上超过写入,并且读取完成可以在相同 的方向上超过写入。监听属性字段418被用来确定事务是否被监听。如所示出的,信道ID 字段406标识与事务关联的信道。 链路层(参考图3) 链路层310 (也称为数据链路层310)充当事务层305与物理层320之间的中间阶段。 在一个实施例中,数据链路层310的职责是提供用于在两个组件链路之间交换事务层分组 (TLP)的可靠机制。数据链路层310的一侧接受由事务层305组装的TLP,应用分组序列标 识符311 (S卩,标识号或分组号),计算并应用检错码(S卩,CRC)312,以及将修改后的TLP提 交给物理层320以供跨物理向外部设备的传输。
[0057] 物理层 在一个实施例中,物理层320包括逻辑子块321和电气子块322以向外部设备物理地 发送分组。本文中,逻辑子块321负责物理层321的"数字"功能。就这点而言,逻辑子块 包括准备用于由物理子块322传输的外出信息的发送部分,以及在将所接收的信息传递到 链路层310之前对其进行标识并准备的接收器部分。
[0058] 物理块322包括发送器和接收器。逻辑子块321向发送器供应符号,发送器使所 述符号序列化并且将其发送到外部设备上。从外部设备向接收器供应经序列化的符号,并 且所述接收器将接收到的信号转换成位流。位流被反序列化并且供应到逻辑子块321。在 一个实施例中,采用8b/10b传输代码,其中发送/接收十位符号。本文中,特殊符号被用来 利用帧323使分组成帧。另外,在一个示例中,接收器还提供从进入的串行流中恢复的符号 时钟。
[0059] 如上所述,尽管参考PCIe协议栈的特定实施例而讨论了事务层305、链路层310、 和物理层320,但分层协议栈不如此限制。事实上,可以包括/实现任何分层协议。作为一 个示例,表示为分层协议的端口 /接口包括:(1)组装分组的第一层,即事务层;将分组按序 排列的第二层,即链路层;以及发送分组的第三层,即物理层。作为一个特定示例,利用公共 标准接口(CSI)分层协议。
[0060] 随着串行链路频率的增加以及芯片向其中设备尺寸日益减小的新加工技术迁移, 提供以下能力变得越来越重要:动态调整发送器和接收器均衡设置以考虑平台和硅变化。
[0061] PCIe第3代(PCIe Gen3)是行业标准的示例,其因此必须在每发送器-接收器对 基上均衡,以确保在用于部署PCIe的大范围的系统的8GT/s处的交互操作性。然而,由不 同厂商所制造的多种设备具有不同加工技术,每个都具有其专有的发送器/接收器设计以 及要适配的专有的硬件算法,这使设计具有保证的交互操作性的组件变得有挑战性。
[0062] 本公开涉及提供硬件钩(hook)并且使用诸如系统BIOS、固件、或微码之类的系统 软件来执行链路训练与均衡过程。本公开可以分别应用于端点设备或根联合体设备的上游 端口或下游端口。在一些实施例中,如以下将详细描述的,链路训练与均衡过程包括两遍 (pass)。
[0063] 特别地,本公开提供减少用于链路训练与均衡的时间并且提高其可靠性的机制。 如将充分详细描述的,按照本公开的链路训练与均衡过程可以采用软件来生成应用于传输 逻辑或接收器逻辑设置的系数集。
[0064] 在一些实施例中,软件被用来根据与耦合到总线接口链路的设备(例如,根联合体 设备或端点设备)关联的全开(full swing) (FS)值和低频(LF)值而生成系数集,所述系 数集被应用于耦合到总线接口链路的设备的发送器逻辑或接收器逻辑设置。
[0065] 在一些实施例中,软件应用生成被应用于端点设备的发送器组件的系数,以使得 根联合体设备可以在PCIe链路训练与均衡过程的阶段3期间满足目标BER。
[0066] 图示了图5,图5是图示PCIe串行点对点构造500的实施例的示意图。尽管图示 了 PCIe串行点对点链路的实施例,但串行点对点链路不如此限制,原因在于其包括用于发 送串行数据的任何传输路径。在所示出的实施例中,基本PCIe链路包括两个低压差分驱动 信号对:发送对501/504以及接收对502/503。
[0067] 因而,设备550包括向设备510发送数据的传输逻辑506以及从设备560接收数据 的接收逻辑507。换句话说,关于设备550,在PCIe链路中包括两个发送路径(S卩,路径505 和525)以及两个接收路径(S卩,路径506和526)。
[0068] 传输路径可以指的是用于发送数据的任何路径,诸如传输线、铜线、光线、无线通 信信道、红外通信链路、或其他通信路径。两个设备(诸如设备550和设备560)之间的连接 称为链路(诸如,链路530)。在一些实施例中,链路530是PCIe总线接口链路。
[0069] 链路可以支持多个通路--每个通路表示一组差分信号对(一对用于发送,一对 用于接收)。为了缩放带宽,链路可以聚合由xN所表示的多个通路,其中N是任何所支持的 链路宽度,诸如1、2、4、8、12、16、32、64、或更宽。在一些实施例中,通路可以称为通信链路 (例如,链路530)的信道。此外,在图5的示意图中,在PCIe串行点对点构造500中示出仅 一个通路(505/525 和 506/526 对)。
[0070] PCIe链路530可以使得设备550、560能够彼此通信。在本公开的一些实施例中, 设备560是本地设备而设备550可以是远程设备。此外,设备550或设备560可以被表征 为根联合体设备或端点设备。例如,在一些实施例中,设备560是根联合体设备,并且设备 550是端点设备。显著地,因为设备550和设备560可以经由链路530彼此通信,所以设备 550和设备560彼此可以称为"链路伙伴"。
[0071] 差分对可以指的是发送差分信号的两个传输路径,诸如线505和525。作为一个示 例,当线505从低压电平切换到高压电平时(S卩,上升沿),线525从高逻辑电平驱动到低逻 辑电平(g卩,下降沿)。差分信号可能表现出诸如更好的信号完整性之类的更好的电气特性, 即交叉耦合、电压过冲/下冲、振铃等。这考虑到更好的定时窗口,其能够实现更快的传输 频率。
[0072] 另外,设备(例如,设备550或设备560)的发送器或接收器组件(例如,传输逻辑 501/504、接收器逻辑502/503)可以分别具有发送器或接收器设置,所述设置可以被设置、 调整、优化等。在一些实施例中,系数集可以被应用于发送器或接收器设置,其中目标在于 利用最小的数据损失来实现设备550、560之间的通信能力。
[0073] 例如,误比特率(BER),其可以定义针对任何特定通路或链路的从一个设备发送到 另一个的数据的阈值误码率。例如,对于给定链路的BER可以是ΚΓ 4或ΚΓ12,这依赖于由特 定通信协议的链路训练与均衡过程所规定的阈值。在图5中所示出的实施例中,对于链路 530的每个通路的BER是ΚΓ 12。
[0074] 本领域一般技术人员可以理解,根据本公开的一些实施例,误比特率(BER)可以被 定义为不正确接收到的比特数(误差)与接收到的总比特数之比。
[0075] 在一些实施例中,可以在远程系数算法模块520内根据在系数寄存器表515中存 储的系数数据来生成系数集。如由图5中的路径507、508所示出的,一旦得到系数,就可以 将它们转移到传输逻辑506和接收器逻辑507。可替代地,位于设备550、560的发送器或接 收器组件的寄存器内的默认系数集(例如,由制造商来提供)可以被应用于传输和接收器逻 辑506、507。此外,根据采用PCIe的实施例,系数集可以在协议所定义的链路训练与状况 状态机(LTSSM)状态期间经由到每个链路伙伴的符号(TS1/TS2符号)传送到每个设备550、 560。
[0076] 在一些实施例中,根据预定义条件,所生成的系数可以被应用于有限冲激响应 (FIR)滤波器以确定是否正在最优地执行传输逻辑506或接收器逻辑507。
[0077] 有利地,在链路训练与均衡过程中可以利用自适应FIR滤波器以在运行时间期间 根据物理信道(例如,通路或链路)的特定属性来标识系数。在一些实施例中,将所生成的系 数和一组接收的脉冲(如果接收到)的乘积被加起来以产生滤波器〇。
[0078] 最显著地,在本公开的一些实施例中,新的系数集被生成并且分别传递到传输逻 辑506或接收器逻辑507,直到达到目标BER。例如,如果目标BER是10_ 12,那么测量所发送 数据的误码率(例如,BER眼510),将所述测量的结果发送到远程系数生成算法模块520(例 如,路径511),并且如果未达到目标BER,则生成新的系数。一旦达到目标BER,那么新的系 数不再生成且不再应用于传输和接收器逻辑506/507。
[0079] 本公开提供了减少用于链路训练与均衡的时间并且提高其可靠性的机制。具体 地,按照本公开的链路训练与均衡过程可以利用运行算法的软件应用,所述算法生成用于 传输逻辑或接收器逻辑设置的系数集。
[0080] 在一些实施例中,软件应用从存储单元或元件(例如,配置与状态寄存器)中读取 与耦合到总线接口链路的设备(例如,根联合体设备或端点设备)关联的全开(FS)值和低频 (LF)值,并且将这些值输入到算法中以生成要应用于耦合到总线接口链路的设备的发送器 或接收器设置的系数集。
[0081] 在一些实施例中,软件应用生成要应用于端点设备的发送器组件的系数,以使得 根联合体设备可以在PCIe链路训练与均衡过程的阶段3期间满足目标BER。
[0082] 可以在传输逻辑506或接收器逻辑507这二者任一处执行均衡。本领域一般技术 人员可以理解,因为接收信号可能与信道噪声混合,所以一个或多个均衡过程可能添加噪 声并且使与给定通路关联的信噪比(SNR)降级,所述给定通路通常不用接收器逻辑507来 表征。因而,在一些实施例中,在发送器侧(例如,传输逻辑506 )处均衡可以是有效的。
[0083] 向前移过附图,图6是图示具有最佳的预设以及优化的发送器系数的误比特率 (BER)眼图的图的示意图。本领域一般技术人员可以理解,BER眼图是电气和光通信信号的 直观图形表示。照此,在通信信道中发送和接收的信号的质量可以根据BER眼图的外观来 判断。BER眼图之所以重要是因为它们可以有助于确定通信系统是否可以在具有尽可能少 的误差的情况下,如实地发送数据位。
[0084] 图6示出了图示具有最佳的预设系数的误比特率(BER)眼602的图601以及具有 优化的发送器或接收器系数的BER眼604的图603。如所示出的,图601中的BER眼602的 张开程度(height)小于图603中的BER眼的张开程度。本领域一般技术人员将理解,BER 眼的张开程度定义系统的噪声容限。在一些实施例中,张开得较大的BER眼指示了比归因 于张开得较小的BER眼的信道噪声更少的通信信道中的噪声。
[0085] 因而,根据本公开的一些实施例,图603中的BER眼604指示了由于优化的发送器 或接收器设置的通信信道中的更少噪声以及更低的误比特率。可替代地,图601中的BER 眼602指示了归因于最佳的预设系数的更大噪声以及更高的误比特率。
[0086] 因而,当优化的系数集被应用于发送器或接收器组件(例如,传输逻辑或接收器逻 辑)时,在通信链路的信道(例如,总线接口链路的通路)中可以达到更低的误比特率。照此, 优化的发送器或接收器系数考虑了通信链路的特定信道的物理特性。按照本公开的系统和 方法包括识别最优发送器或接收器系数,以降低误比特率以提高通信系统内的数据传输性 能。
[0087] 图7示出按照本公开的实施例的用于链路训练与均衡的方法700。在一些实施例 中,方法700开始于执行PCIe Gen 3链路训练与均衡过程的阶段0和阶段1 (块701)。在 阶段〇和阶段1期间,经由通信链路的至少一个信道将第一数据集从链路伙伴组件传送到 第一组件。
[0088] 第一数据集可以包括一个或多个有序集、一个或多个预设、一个或多个提示、FS和 LF值等。另外地,第一组件可以被表征为根联合体或端点设备并且其可以包括上游端口或 下游端口。
[0089] 图8是图示PCIe链路训练与均衡过程的阶段0的实施例的示意图800。如所示出 的,两个组件(根联合体设备801和端点设备803)经由通信链路的差分对805a/805b (由箭 头来不出)彼此f禹合。
[0090] 根联合体设备801和端点设备803包括传输逻辑(分别地,802a、804b)和接收器逻 辑(804a、804b )以实现两个设备801、803之间的通信。在一些实施例中,根联合体设备801 可以包括下游端口(见图2),并且端点设备803可以包括上游端口(见图2)。
[0091] 在一些实施例中,(例如,PCIe链路训练与均衡过程的)阶段0可以包括将第一数 据集(例如,TS1有序集、一个或多个预设值、提示等)从(例如,端点设备801的)上游端口发 送到(例如,根联合体设备803的)下游端口。数据可以在设备801、803之间以第一数据传 输速率来传送。在阶段0中发送数据的速率可以小于或等于与根联合体设备801关联的第 一最大数据传输速率以及与端点设备803关联的第二最大数据传输速率。
[0092] 在本公开的一些实施例中,发送数据的速率近似为与PCIe Genl或PCIe Gen2 关联的最大数据传输速率。与PCIe Genl关联的最大数据传输速率是2. 5千兆传输每秒 (2. 5GT/s),并且与PCIe Gen2关联的最大数据传输速率是5. OGT/s。
[0093] 另外,在阶段0期间,设备801、803这二者可以通告与每个设备801、803关联的最 大数据传输速率。另外,设备801、803这二者使链路以某一 BER在PCIe Genl或PCIe Gen2 处足以操作。例如,在向链路训练与均衡过程的下一阶段过渡之前,设备801、803这二者必 须表现出它们可以以10 4的最小BER发送信号。在一些实施例中,如果未达到目标BER,那 么链路可以采用更低的数据传输速率来操作。
[0094] 图9是图示PCIe链路训练与均衡过程的阶段1的实施例的示意图。如所示出的, 根联合体设备901和端点设备903 (具有传输逻辑902a、904b以及接收器逻辑902b、904a) 已过渡到PCIe链路训练与均衡过程的阶段1。
[0095] 在PCIe链路训练与均衡过程的阶段1中,设备901、903这二者使通信链路的每个 通路以数据传输速率而操作,以交换第二数据集(例如,TS1有序集)。在一些实施例中,阶 段1中的数据传输速率可以大于阶段0期间的数据传输速率。例如,阶段1期间的数据传 输速率可以近似是PCIe Gen3链路训练与均衡过程的阶段1期间的目标数据传输速率(即, 8GT/s)。
[0096] 最显著地,在按照本公开的链路训练与均衡过程的阶段1期间,设备901、903这二 者通告它们的FS和(LF)值。在一些实施例中,FS值可以是可以由发送器组件所生成的最 大差分电压。
[0097] 另外,根据本公开的一些实施例,发送器或接收器系数的和应该等于FS :

【权利要求】
1. 一种装置,包括: 耦合到串行点对点链路的差分通路的端口,所述端口包括用于在第一阶段和第二阶段 中均衡至少所述差分通路的配置逻辑,其中所述端口进一步包括第一储存器以保存在所述 第一阶段期间所请求的特性,并且其中所述配置逻辑进一步在第二阶段期间发起引用系数 集的请求,所述系数集基于至少在所述第一储存器中保存的所述特性来生成。
2. 如权利要求1所述的装置,其中重置发生在所述第一阶段和所述第二阶段之间。
3. 如权利要求1所述的装置,其中所述第一储存器包括配置寄存器,并且其中所述端 口进一步包括第二储存器以保存基于至少所述特性而生成的所述系数集。
4. 如权利要求1所述的装置,其中所述特性从由低频值、全开值、以及低频值和全开值 的组合所构成的群组中选择。
5. 如权利要求1所述的装置,其中所述系数集在所述第一阶段期间基于至少所述特性 来生成。
6. 如权利要求1所述的装置,其中所述系数集在所述第二阶段期间基于至少所述特性 来生成。
7. 如权利要求1所述的装置,其中所述系数集由要运行的代码基于至少所述特性来生 成。
8. -种装置,包括: 具有下游端口的设备,其响应于经受链路训练与均衡过程而从端点设备的上游端口接 收第一有序集; 其中所述第一有序集包括全开值和低频值; 其中所述下游端口包括至少一个配置寄存器,以存储要基于所述全开值和所述低频值 而生成的第一系数集。
9. 如权利要求8所述的装置,其中所述下游端口进一步包括接收器。
10. 如权利要求8所述的装置,其中所述第一系数集被存储于所述端点设备内的单个 配置寄存器中。
11. 如权利要求8所述的装置,其中所述至少一个配置寄存器被实现为触发器存储元 件。
12. 如权利要求8所述的装置,其中所述第一系数集由系统BIOS、固件、或多码中的至 少一个或多个来生成。
13. 如权利要求8所述的装置,其中所述设备耦合到触摸使能的显示设备。
14. 如权利要求8所述的装置,其中所述第一系数集包括前标、游标、和后标值。
15. -种系统,包括: 响应于第一组件和第二组件经受链路训练与均衡过程,第二组件沿着通信链路的至少 一个信道经由第一传输逻辑而将第一数据集传送到所述第一组件; 其中所述第一组件和所述第二组件是链路伙伴; 其中所述第一数据集进一步包括在所述第一组件的第一存储单元中存储的全开值和 低频值; 其中所述第一组件存储根据所述全开值和所述低频值所计算的第一系数集;并且 其中所述第二组件将所计算的第一系数集应用于所述第二组件的所述第一传输逻辑。
16. 如权利要求15所述的系统,其中所计算的第一系数集包括沿着最大增长线的中点 坐标。
17. 如权利要求15所述的系统,其中所述第一组件是根联合体设备,并且所述第二组 件是端点设备。
18. 如权利要求15所述的系统,其中所述通信链路包括外围组件互连高速(PCIe)总线 接口链路。
19. 如权利要求15所述的系统,其中所述第一存储单元是配置寄存器。
20. 如权利要求15所述的系统,其中进一步响应于所述第一组件和所述第二组件经受 所述均衡过程,所述第一组件将第二数据集传送到所述第二组件,以微调从第二发送器的 第一传输逻辑向所述第一组件的数据传输。
21. 如权利要求15所述的系统,其中所述第一存储单元可由软件应用来读取。
22. 如权利要求15所述的系统,其中所计算的第一系数集包括前标分量、游标分量、和 后标分量。
23. -种用于设备均衡的方法,包括: 从耦合到串行点对点差分互连的组件的第一寄存器中读取所请求的低频值和全开 值; 基于所述低频值和所述全开值来计算最优系数集;以及 在一个或多个配置寄存器中存储所述最优系数集,以供后续请求在配置传输逻辑中利 用所述最优系数集。
24. 如权利要求23所述的方法,其中所述最优系数包括前标、游标、和后标值。
25. 如权利要求23所述的方法,其中通过确定所述低频值和所述全开值的和是否可被 4整除来计算所述最优系数中的至少一个,并且如果是,那么所述最优系数中的至少一个是 所述全开值与所述低频值之差除以4的绝对值。
26. 如权利要求23所述的方法,其中通过确定所述低频值和所述全开值的和是否可被 4整除来计算所述最优系数中的至少一个,并且如果否,那么所述最优系数中的至少一个是 所述全开值与所述低频值之差除以4的绝对值的最小值。
27. -种链路训练与均衡过程,包括: 执行PCI高速第三代(PCIe Gen3)链路训练与均衡过程的阶段0和阶段1 ; 其中第一数据集从端点设备经由通信链路的至少一个信道而传送到根联合体设备; 在至少一个寄存器中存储全开值和低频值; 从所述至少一个寄存器中读取所述全开值和所述低频值; 根据所述全开值和所述低频值来计算第一系数集; 重置所述通信链路; 执行PCIe Gen3链路训练与均衡过程的阶段0、阶段1、和阶段2 ;以及 在PCIe Gen3链路训练与均衡过程的阶段3期间,应用所计算的第一系数集来建立第 一组件的传输逻辑。
28. 如权利要求27所述的链路训练与均衡过程,其中由软件应用来计算所述第一系数 集。
29. 如权利要求27所述的链路训练与均衡过程,其中重置所述通信链路包括重新连接 所述通信链路,以使得所述根联合体设备和所述端点设备可以彼此通信。
30.如权利要求27所述的链路训练与均衡过程,进一步包括微调微调从所述端点设备 向所述根联合体设备的数据传输。
【文档编号】G06F15/16GK104050138SQ201410097202
【公开日】2014年9月17日 申请日期:2014年3月17日 优先权日:2013年3月15日
【发明者】D.达斯沙玛, K.L.S.P.加德纳加文卡塔, H.K.波拉迪亚 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1