用于改进与硬件驱动的算法的均衡的装置、系统、以及方法

文档序号:6540703阅读:90来源:国知局
用于改进与硬件驱动的算法的均衡的装置、系统、以及方法
【专利摘要】一种系统和方法包括响应于经历均衡的第一组件和第一组件的链路伙伴组件,第一组件用于向链路伙伴组件传递第一数据集。第一组件可包括用于接收第一均衡数据集的至少一个接收机。第一组件可进一步包括耦合到所述接收机的用于存储所述均衡数据的系数存储。另外,耦合到所述系数存储的系数逻辑用于基于第一均衡数据集生成第一组系数。第一组件用于向链路伙伴组件发送第一组系数。
【专利说明】用于改进与硬件驱动的算法的均衡的装置、系统、以及方法

【技术领域】
[0001]本公开涉及计算系统,并且具体地(而非排他地)涉及用于改进链路训练以及均衡过程的技术。

【专利附图】

【附图说明】
[0002]图1是示出了包括多核处理器的计算系统的框图的实施例的示意图。
[0003]图2是示出了包括兼容外围部件互连快速(PCIe)体系结构的计算系统的实施例的示意图。
[0004]图3是示出了包括分层栈的兼容PCIe的互连体系结构的实施例的示意图。
[0005]图4是示出了要在互连体系结构内生成或接收的兼容PCIe的请求或分组的实施例的示意图。
[0006]图5是示出了 PCIe串行点对点结构的实施例的示意图。
[0007]图6是示出了具有最佳预设的位误差率(BER)眼图以及具有经优化的发射机系数的BER眼图的示意图。
[0008]图7是示出了 PCIe链路训练和均衡过程的阶段O的实施例的示意图。
[0009]图8是示出了 PCIe链路训练和均衡过程的阶段I的实施例的示意图。
[0010]图9是示出了列出可被应用于发射机或接收机设置的前指针(precursor)和后指针(post curser)系数的集合的表的示意图。
[0011]图10是示出了 PCIe链路训练和均衡过程的阶段2的实施例的示意图。
[0012]图11是示出了 PCIe链路训练和均衡过程的常规阶段3过程的示意图。
[0013]图12示出了根据本公开的一实施例的用于链路训练和均衡的方法。
[0014]图13示出了根据本公开的一实施例的用于链路训练和均衡的另一方法。

【具体实施方式】
[0015]在以下描述中,阐明了众多具体细节,如具体类型的处理器和系统配置的示例、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等,以提供对本公开的透彻理解。然而,对本领域普通技术人员显而易见的是,不一定要采用这些具体细节来实施本公开。在其它实例中,未详细描述公知的组件或方法,诸如具体或替代的处理器架构、用于所描述算法的具体逻辑电路/代码、具体固件代码、具体互连操作、具体逻辑配置、具体制造技术和材料、具体编译器实现、代码中算法的具体表达、具体掉电和功率选通技术/逻辑、以及计算机系统的其它具体操作细节,以避免不必要地模糊本公开。
[0016]尽管参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以下实施例,但是其它实施例适用于其它类型的集成电路和逻辑器件。本文描述的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于较好的能效和节能。例如,所公开的实施例不限于台式计算机系统或超级本?。并且也可用于其它设备,诸如,手持式设备、平板、其他薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用通常包括:微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行以下教导的功能和操作的任何其它系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。如将在以下描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是它们的组合)对于用性能考量来平衡的‘绿色技术’的前景是至关重要的。
[0017]随着计算系统的进步,本文的各组件可变得更加复杂。结果,用于在这些组件之间进行耦合和通信的互连体系结构也增加了复杂性以确保满足带宽要求来用于最优组件操作。此外,不同的市场细分要求互连体系结构的不同方面来适合该市场的需求。例如,服务器需要较高的性能,而移动生态系统有时能够牺牲整体性能来换取功率节省。然而,大多数结构的单一目的是使用最大功率节省来提供最高可能性能。在下文中,讨论了多个互连,它们将潜在地从在此描述的本公开的各方面中获益。
[0018]参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SoC)、或用于执行代码的其它器件。在一个实施例中,处理器100包括至少两个核——核101和102,它们可包括非对称核或对称核(所示实施例)。然而,处理器100可包括可以是对称的或非对称的任何数量的处理元件。
[0019]在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,这些元件能够保持处理器的诸如执行状态或架构状态之类的状态。换言之,在一个实施例中,处理元件指的是能够独立地与代码(诸如软件线程、操作系统、应用或其它代码)相关联的任何硬件。典型地,物理处理器(或处理器插槽)指的是集成电路,该集成电路潜在地包括任何数量的其它处理元件(诸如核或硬件线程)。
[0020]核通常指的是位于集成电路上的能够维持独立体系结构状态的逻辑,其中每个独立维持的体系结构状态与至少一些专用的执行资源相关联。与核相反,硬件线程典型地表示位于集成电路上的能够维持独立体系结构状态的任何逻辑,其中被独立维持的体系结构状态共享对执行资源的访问。如可以看到,当某些资源被共享而其它资源专属于体系结构状态时,硬件线程与核的命名之间的界限交迭。不过,核和硬件线程通常被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
[0021]如图1所示的物理处理器100包括两个核——核101和102。在此,核101和102被视为对称核,即这些核具有相同的配置、功能单元和/或逻辑。在另一个实施例中,核101包括无序处理器核,而核102包括有序处理器核。然而,核101和102可从任何类型的核中单独地选择,诸如原生核、受软件管理的核、适于执行原生指令集体系结构(ISA)的核、适于执行转换指令集体系结构(ISA)的核、协同设计的核或其它已知核。在异构核环境(B卩,非对称核)中,一些形式的转换(如二进制转换)可被用来在一个或这两个核上调度或执行代码。不过,为进一步讨论,以下将进一步详细描述在核101中示出的功能单元,因为核102中的单元以在所示实施例中的类似方式操作。
[0022]如所描绘,核101包括两个硬件线程1la和101b,两个硬件线程1la和1lb也可称为硬件线程槽1la和101b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处理器100视为四个独立的处理器,即能够并发地执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与体系结构状态寄存器1la相关联,第二线程与体系结构状态寄存器1lb相关联,第三线程可与体系结构状态寄存器102a相关联,并且第四线程可与体系结构状态寄存器102b相关联。在此,体系结构状态寄存器(101a、101b、102a和102b)中的每一个可被称为如上所述的处理元件、线程槽、或线程单元。如图所示,体系结构状态寄存器1la在体系结构状态寄存器1lb中被复制,因此能够针对逻辑处理器1la和逻辑处理器1lb存储单独的体系结构状态/上下文。在核101中,也可复制用于线程1la和1lb的其它较小资源,诸如指令指针以及分配器和重命名块130中的重命名逻辑。诸如重排序器/隐退单元135中的重排序缓冲器、ILTB120、载入/存储缓冲器、以及队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据高速缓存和数据TLB115、执行单元140、以及无序单元135的部分之类的其它资源可能是被完全共孕的。
[0023]处理器100通常包括其它资源,这些其它资源可被完全共享、通过分区被共享、或由处理元件指定/专属于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省去这些功能单元中的任意功能单元,且可包括未描绘的任何其它已知的功能单元、逻辑或固件。如图所示,核101包括简化的、代表性的无序(000)处理器核。但是有序处理器可用于不同实施例中。000核包括用于预测要被执行/进行的分支的分支目标缓冲器120以及用于存储指令的地址转换条目的指令转换缓冲器(1-TLB) 120。
[0024]核101进一步包括耦合至取出单元120以用于解码所取出的元素的解码模块125。在一个实施例中,取出逻辑包括分别与线程槽1laUOlb相关联的单独定序器。通常,核101与第一 ISA相关联,该第一 ISA定义/指定能在处理器100上执行的指令。通常作为第一 ISA—部分的机器码指令包括该指令的一部分(称为操作码),该指令引用/指定待执行的指令或操作。解码逻辑125包括由这些指令的操作码来识别这些指令并在流水线上传递所解码的指令以进行如第一 ISA所定义的处理的电路。例如,在一个实施例中,如以下将更详细讨论的,解码器125包括被设计成或适于识别诸如事务性指令之类的特定指令的逻辑。作为解码器125识别的结果,体系结构或核101采取特定的、预定的动作以执行与适当指令相关联的任务。重要的是,注意到本文描述的任何任务、框、操作和方法可响应于单个或多个指令而被执行;其中一些可以是新的或者旧的指令。注意,在一个实施例中,解码器126识别相同的ISA (或其子集)。或者,在异构核环境中,解码器126识别第二 ISA (第一ISA的子集或不同的ISA)。
[0025]在一个示例中,分配器和重命名器块130包括用于保留资源(诸如用于存储指令处理结果的寄存器文件)的分配器。然而,线程1la和1lb潜在地能够进行无序执行,其中分配器和重命名块130还保留其它资源(诸如用于跟踪指令结果的重排序缓冲器)。单元130还可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其它寄存器。重排序/隐退单元135包括诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持无序执行的指令的无序执行和稍后的有序隐退。
[0026]在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。也可包括与执行单元相关联的寄存器文件,以存储信息指令处理结果。示例性的执行单元包括:浮点执行单元、整数执行单元、跳跃执行单元、加载执行单元、存储执行单元以及其它已知的执行单元。
[0027]较低级的数据高速缓存和数据转换缓冲器(D-TLB) 150耦合至执行单元140。数据高速缓存用于存储最近使用/操作的元素(诸如数据操作数),这些元素在存储器一致性状态下潜在地被保持。D-TLB用于存储最近的虚拟到物理地址转换/线性到物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分割成多个虚拟页。
[0028]在此,核101和102共享对较高级或进一步的高速缓存的访问,如与片上接口 110相关联的第二级高速缓存。注意,较高级或进一步指的是高速缓存级增加或进一步远离执行单元。在一个实施例中,较高级高速缓存是末级数据高速缓存——处理器100上的存储器层次中的最后级高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,迹线高速缓存一一种类型的指令高速缓存——可耦合在解码器125之后,用于存储最近解码的迹线。在此,指令可能引用宏指令(即,解码器所识别的通用指令),该宏指令可解码成多个微指令(微操作)。
[0029]在所描绘的配置中,处理器100还包括片上接口模块110。历史上,存储器控制器(以下将更详细地描述)已被包括在处理器100外部的计算系统中。在该场景中,片上接口110与处理器100外部的器件通信,处理器100外部的器件诸如系统存储器175、芯片组(通常包括存储器控制器中枢以连接到存储器175以及I/O控制器中枢以连接到外围器件)、存储器控制器中枢、北桥、或其它集成电路。并且在该场景中,总线105可包括任何已知的互连,诸如多点总线、点对点互连、串行互连、并行总线、一致性(例如高速缓存一致性)总线、分层协议体系结构、差分总线以及GTL总线。
[0030]存储器175可专属于处理器100或与系统中的其它器件共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其它已知的存储设备。注意,器件180可包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储,无线收发器,闪存器件,音频控制器,网络控制器,或其它已知器件。
[0031 ] 然而,最近,随着更多的逻辑和器件被集成在单个管芯上(如S0C),这些器件中的每一个可被合并在处理器100上。例如,在一个实施例中,存储器控制器中枢与处理器100处于同一封装和/或管芯上。在此,核的一部分(核上部分)100包括与诸如存储器175和/或图形器件之类的其它器件进行对接的一个或多个控制器。包括用于与此类器件进行接口的控制器和互连的该配置通常被称为核上(或非核(un-core)配置)。作为示例,片上接口110包括用于片上通信的环互连和用于片外通信的高速串行点对点链路105。然而,在SoC环境中,诸如网络接口、协同处理器、存储器175、图形处理器180以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小外形规格。
[0032]在一个实施例中,处理器100能够执行编译器、优化和/或翻译器代码177以编译、翻译和/或优化应用代码176,以支持本文所描述的装置和方法或与其接口。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序组。通常,利用编译器对程序/应用代码的编译以多个阶段和多遍进行,以将高级编程语言代码变换成低级机器或汇编语言代码。然而,仍可利用单遍编译器以进行简单编译。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如,词法分析、预处理、解析、句法分析、代码生成、代码变换以及代码优化。
[0033]较大的编译器通常包括多个阶段,但通常这些阶段被包括在两个一般阶段内:(I)前端,在前端中通常进行句法处理、语义处理以及一些变换/优化;以及(2)后端,在后端中通常进行分析、变换、优化以及代码生成。一些编译器涉及中端,中端说明编译器的前端与后端之间的界定模糊。因此,对编译器的插入、关联、生成或其它操作的引用可在编译器的上述阶段或遍次以及任何其它已知的阶段或遍次中的任意之中进行。作为例示性示例,编译器潜在地将操作、调用、函数等插入到一个或多个编译阶段中,诸如将调用/操作插入到编译的前端阶段中并且随后在变换阶段期间将该调用/操作变换成较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入此类操作/调用,并且优化代码用于在运行时间期间的执行。作为特定例示性示例,二进制代码(已编译代码)可在运行时间期间被动态地优化。在此,程序代码可包括动态优化代码、二进制代码或其组合。
[0034]类似于编译器,诸如二进制翻译器之类的翻译器静态地或动态地翻译代码以优化和/或翻译代码。因此,对代码执行、应用代码、程序代码、或其他软件环境的引用可以指:(I)编译器程序、优化代码优化器或转换器的动态或静态执行,以编译程序代码、维持软件结构、执行其它操作、优化代码、或转换代码;(2)主程序代码的执行,包括操作/调用,诸如已经被优化/编译的应用代码;(3)与主程序代码相关联的诸如库之类的其它程序代码的执行,以维持软件结构、执行其他软件相关操作、或优化代码;或(4)它们的组合。
[0035]一种互连结构体系结构包括外围部件互连(PCI)快速(Express) (PCIe)体系结构。PCIe的主要目标是使得来自不同供应商的各组件和器件能够在开放体系结构中互操作,横跨多个市场细分;客户机(台式机和移动)、服务器(标准和企业),以及嵌入式和通信设备。PCI快速是针对各种各样的将来计算和通信平台定义的高性能、通用I/O互连。一些PCI属性,如其使用模型、加载-存储体系结构、以及软件接口,已通过其各版本得到维持,而先前的并行总线实现已被高度可伸缩、完全串行的接口所替换。PCI快速的更新近版本利用点对点互连、基于交换机的技术、以及分组化协议的进步,来产生新的性能水平和特征。功率管理、服务质量(QoS)、热插拔/热切换支持、数据完整性、以及出错处理是PCI快速所支持的高级特征中的一些。
[0036]参考图2,示出了包括互连一组组件的点对点链路的结构的实施例。系统200包括耦合到控制器中枢215的处理器205和系统存储器210。处理器205包括任何处理元件,如微处理器、主处理器、嵌入式处理器、协处理器、或其他处理器。处理器205通过前侧总线(FSB)206耦合到控制器中枢215。在一个实施例中,如下所述,FSB206是串行点对点互连。在另一实施例中,链路206包括兼容不同的互连标准的串行、差分互连体系结构。
[0037]系统存储器210包括任何存储器设备,如随机存取存储器(RAM)、非易失性(NV)存储器、或可由系统200中的器件访问的其他存储器。系统存储器210通过存储器接口 216耦合到控制器中枢215。存储器接口的示例包括双数据率(DDR)存储器接口、双通道DDR存储器接口、以及动态RAM (DRAM)存储器接口。
[0038]在一个实施例中,控制器中枢215是外围部件互连快速(PCIe或PCIE)互连分层结构中的根中枢、根联合体、或根控制器。控制器中枢215的示例包括芯片组、存储器控制器中枢(MCH)、北桥、互连控制器中枢(ICH)、南桥、以及根控制器/中枢。通常,术语芯片组指的是两个物理上分开的控制器中枢,即耦合到互连控制器中枢(ICH)的存储器控制器中枢(MCH)。注意,当前系统通常包括与处理器205集成在一起的MCH,而控制器215用于按下述类似的方式与I/O设备通信。在一些实施例中,通过根联合体设备来可任选地支持对等路由。
[0039]在此,控制器中枢215通过串行链路219耦合到交换机/桥接器220。输入/输出模块217和221 (也可被称为接口 /端口 217和221)包括/实现用于提供控制器中枢215与交换机220之间的通信的分层协议栈。在一个实施例中,多个设备能够被耦合到交换机220。
[0040]交换机/桥接器220将来自设备225的分组/消息上行地路由(即沿分层结构向上朝根联合体)、下行地向控制器中枢215路由(B卩,沿分层结构向下远离根控制器),从控制器205或系统存储器210向设备225路由。在一个实施例中,交换机220被称为多个虚拟PCI到PCI桥接设备的逻辑部件。设备225包括要耦合到电子系统的任何内部或外部设备或组件,如I/o设备、网络接口控制器(NIC)、插卡、音频处理器、网络处理器、硬盘驱动器、存储设备、⑶/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、以及其他输入/输出设备。通常,在PCIe常用语中,诸如设备,被称为端点。虽然并未具体示出,但设备225可包括用于支持传统或其他版本PCI设备的PCIe到PCI/PC1-X桥接器。PCIe中的端点设备通常被分类成传统、PCIe、或根联合体集成端点。
[0041]图形加速器230也通过串行链路232耦合到控制器中枢215。在一个实施例中,图形加速器230耦合到MCH,MCH耦合到ICH。交换机220以及相应的I/O设备225随后耦合到ICH。I/O模块231和218也用于实现分层协议栈,以用于在图形加速器230与控制器中枢215之间通信。类似于以上的MCH讨论,图形控制器或图形加速器230本身可集成在处理器205中。
[0042]转向图3,示出了分层协议栈的实施例。分层协议栈300包括任何形式的分层通信栈,如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或其他分层栈。虽然以下参考图2-5的讨论是关于PCIe栈的,但相同的概念可被应用于其他互连栈。在一个示例中,协议栈300是包括事务层305、链路层310、以及物理层320的PCIe协议栈。接口,诸如图1中的接口 317、318、321、322、326、以及331,可被表示为通信协议栈300。表示为通信协议栈也可被称为实现/包括协议栈的模块或接口。
[0043]PCI Express (PCI快速)使用分组在各组件之间传达信息。分组被形成在事务层305和数据链路层310中以将信息从发送组件携带至接收组件。随着发送的分组流过其它层,它们被扩充以具有在那些层处理分组所需的附加信息。在接收侧,逆过程发生并且分组从其物理层320表示转变为数据链路层310表示,并最终(对于事务层分组)转变为可由接收设备的事务层305处理的形式。
[0044]事务层
[0045]在一个实施例中,事务层305用于提供设备的处理核与互连体系结构(如数据链路层310和物理层320)之间的接口。就此,事务层305的主要责任是对分组(即,事务层分组,或即TLP)的组装和分解。事务层305通常管理TLP的信用基础流控制。PCIe实现拆分事务,即请求和响应由时间分开的事务,从而允许链路在目标设备收集响应的数据时携带其他话务。
[0046]另外,PCIe利用基于信用的流控制。在这一方案中,设备广告事务层305中的各接收缓冲区中的每一个的初始信用量。在该链路的相对端的外部设备,如图1中的控制器中枢115,对每一 TLP所消耗的信用的数量进行计数。如果事务没有超出信用限制,则该事务可被传送。在接收到响应后,信用量恢复。信用方案的优点是信用返回的等待时间不影响性能,假定没有遇到信用限制的话。
[0047]在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间、以及消息地址空间。存储器空间事务包括向存储器映射的位置/从存储器映射的位置转移数据的读请求和写请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(如32位地址)或长地址格式(如64位地址)。配置空间事务被用于访问PCIe设备的配置空间。到配置空间的事务包括读请求和写请求。消息空间事务(或即,简单地,消息)被定义为支持PCIe代理之间的带内通信。
[0048]因此,在一个实施例中,事务层305组装分组头部/净荷306。当前分组头部/净荷的格式可在PCIe规范网站处的PCIe规范中找到。
[0049]快速参考图4,示出了 PCIe事务描述符的实施例。在一个实施例中,事务描述符400是用于携带事务信息的机制。就此,事务描述符400支持系统中事务的标识。其他可能用途包括跟踪默认事务排序的修改和事务与信道的关联。
[0050]事务描述符400包括全局标识符字段402、属性字段404以及信道标识符字段406。在所示示例中,全局标识符字段402被示为包括局部事务标识符字段408和源标识符字段410。在一个实施例中,全局事务标识符402对所有未完成请求而言是唯一的。
[0051]根据一个实现,局部事务标识符字段408是由发出请求的代理所生成的字段,并且它对于需要对该发出请求的代理来完成的所有未完成的请求而言是唯一的。此外,在该示例中,源标识符410唯一地标识PCIe分层结构内的请求者代理。因此,与源ID410 —起,局部事务标识符408字段提供事务在分层结构域内的全局标识。
[0052]属性字段404指定事务的特性和关系。就此,属性字段404潜在地被用来提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段404包括优先级字段412、保留字段414、排序字段416以及无监视字段418。在此,优先级子字段412可由发起者修改以向事务分配优先级。保留属性字段414被保留以供将来使用或供应商定义的用途。使用优先级或安全属性的可能的使用模型可以使用该保留属性字段来实现。
[0053]在该示例中,排序属性字段416被用来提供传达可修改默认排序规则的排序的类型的可任选信息。根据一个示例实现,排序属性“O”表示要应用默认排序规则,其中排序属性表不松散的排序,其中写可在同一方向上传递各个写,并且读完成可以在同一方向上传递各个写。监听属性字段418被用来确定事务是否被监听。如图所示,信道ID字段406标识事务与之相关联的信道。
[0054]链路层(参考图3)
[0055]链路层310 (也被称为数据链路层310)担当事务层305与物理层320之间的中间阶段。在一个实施例中,数据链路层310的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层310的一侧接受事务层305所组装的TLP,应用分组序列标识符311 (即标识号或分组号),计算并应用错误检测码(即CRC312),并将经修改的TLP提供给物理层320以供跨物理层传输给外部设备。
[0056]物理层
[0057]在一个实施例中,物理层320包括用于将分组物理地传送给外部设备的逻辑子块321和电子子块322。在此,逻辑子块321负责物理层321的“数字”功能。就此,逻辑子块包括用于准备外出信息以供物理子块322传输的传送部分以及用于在将接收到的信息传递给链路层310之前标识并准备该接收到的信息的接收机部分。
[0058]物理块322包括发射机和接收机。发射机由逻辑子块321来提供码元,发射机将这些码元串行化并向外部设备传送。来自外部设备的串行化的码元被提供给接收机,并且接收机将接收到的信号转换成位流。位流被解串行化并被提供给逻辑子块321。在一个实施例中,采用8b/10b传输码,其中10位码元被传送/接收。在此,特殊码元被用于将分组分成各个帧323。另外,在一个示例中,接收机还提供从传入串行流恢复的码元时钟。
[0059]如上所述,虽然参考PCIe协议栈的特定实施例讨论了事务层305、链路层310以及物理层320,但分层协议栈不限于此。实际上,任何分层协议可被包括/实现。作为示例,被表示为分层协议的端口 /接口包括:(1)用于组装分组的第一层,即事务层;用于将分组序列化的第二层,即链路层;以及用于传送分组的第三层,即物理层。作为特定示例,利用通用标准接口(CSI)分层协议。
[0060]随着串行链路的频率的增加和芯片迁移到具有日益降低的器件尺寸的新工艺技术,提供动态地调整发射机和接收机均衡设置以将各平台和硅变型考虑在内的能力变得日益重要。
[0061]第三代PCIe (PCIe Gen3)是必须在每发射机-接收机对的基础上如此均衡以确保部署PCIe的各种各样的系统在8GT/s处的互操作性的工业标准的示例。然而,由不同的供应商制造的具有不同的工艺技术的各种设备的多样性(每一设备具有它们专用的发射机/接收机设计以及改编的专用硬件算法)使得设计具有保证互操作性的组件成为挑战。
[0062]本公开可被应用于上行端口、下行端口、或这两者。在一些实施例中,链路训练和均衡过程包括两遍,如下文详细描述的。
[0063]接着参考图5,示出了 PCIe串行点对点结构500的实施例。虽然示出了 PCIe串行点对点链路的实施例,但串行点对点链路不限于此,因为它包括用于传送串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个低电压的、差分地驱动的信号对:传送对501/504和接收对502/503。
[0064]因此,设备550包括用于将数据传送给设备510的传输逻辑501和用于从设备560接收数据的接收逻辑507。换言之,对于设备550,两个传送路径(S卩,路径505和525)和两个接收路径(即,路径506和526)被包括在PCIe链路中。
[0065]传输路径可以指用于传送数据的任何路径,如传输线、铜线、光学线路、无线通信信道、红外通信链路、或其他通信路径。诸如设备550和设备560等两个设备之间的连接被称为链路,如链路530。在一些实施例中,链路530是PCIe总线接口链路。
[0066]链路可以支持多条通道(lane)——每条通道表示一组差分信号对(一个对用于传输,一个对用于接收)。为了扩展带宽,链路可以聚集表示为xN的多条通道,其中N是任何所支持的链路宽度,如1、2、4、8、12、16、32、64或更宽。在一些实施例中,通道可被称为通信链路(例如,链路530)的信道。此外,在图5的示意图中,只有一条通道(对505/525和506/526)被示出在PCIe串行点对点结构500中。
[0067]PCIe链路530可以使设备550、560能够彼此通信。在本公开的一些实施例中,设备560是本地设备,而设备550可以是远程设备。此外,设备550或设备560可被表征为根联合体设备或端点设备。例如,在一些实施例中,设备560是根联合体设备且设备550是端点设备。注意,因为设备550和设备560可以沿链路530彼此通信,所以设备550和设备560可被称为彼此的“链路伙伴”。
[0068]差分对可以指用于传送差分信号的两条传输路径,如路线505和525。作为不例,在路线505从低电平转换为高电平(即上升沿)时,路线525从高逻辑电平驱动到低逻辑电平(B卩,下降沿)。差分信号可能示出较好的电学特性,如较好的信号完整性,即交叉耦合、电压过冲/下冲、振铃,等等。这允许更好的定时窗口,这允许更快的传输频率。
[0069]另外,设备(例如,设备550或设备560)的发射机或接收机组件(例如,传输逻辑501/504、接收机逻辑502/503)可具有相应的发射机或接收机设置,该设置可被设定、调整、优化,等等。在一些实施例中,一组系数可被应用于发射机或接收机设置,目标在于在最小数据损失的情况下实现设备550、560之间的通信能力。
[0070]例如,位误差率(BER),它可定义任何特定通道或链路的从一个设备传送到另一设备的数据的阈值误差率。例如,取决于特定通信协议的链路训练和均衡过程所指定的阈值,给定链路的BER可以是10_4或10_12。在图5所示的实施例中,链路530的每一通道的BER
是 10_12。
[0071]本领域普通技术人员可明白,根据本公开的一些实施例,位误差率(BER)可被定义为不正确地接收到的位(误差)的数量与接收到的位的总数量的比率。
[0072]在一些实施例中,该组系数可以在远程系数算法模块520内根据储存在系数注册表515中的系数数据来生成。一旦导出了系数,它们可被传送给传输逻辑501/504和接收机逻辑502/503 (例如,附图中的路径507、508)。或者,位于设备550、560的发射机或接收机组件的寄存器内的一组默认系数(例如,由制造商提供)可被应用于传输和接收机逻辑506、507。此外,根据采用PCIe的一实施例,在协议定义的链路训练和状况状态机(LTSSM)状态期间,一组系数可经由码元(TS1/TS2码元)被传递给每一设备550、560给每一链路伙伴。
[0073]在一些实施例中,根据预定义的条件,所生成的系数可被应用于有限冲激响应(FIR)滤波器,以确定传输逻辑501/504或接收机逻辑502/503是否在最优地执行。
[0074]有利地,自适应FIR滤波器可被用于链路训练和均衡过程中以在运行时期间根据物理信道(例如,通道或链路)的特定属性来标识系数。在一些实施例中,所生成的系数的产物与接收到的冲激的集合(如果接收到的话)被加在一起以产生滤波器。
[0075]最值得注意的是,在本公开的一些实施例中,新的一组系数被生成并分别传递给传输逻辑501/504或接收机逻辑502/503,直至达到目标BER。例如,如果目标BER是10_12,则测量所传送的数据的误差率(例如,BER眼510),其结果被发送给远程系数生成算法模块520(例如,路径511),并且在没有达到目标BER的情况下生成新系数。一旦达到了目标BER,新系数不被生成并且不被应用于传输和接收机逻辑502/503。
[0076]本公开提供一种降低链路训练和均衡的时间并提高其可靠性的机制。在一些实施例中,根据本公开的链路训练和均衡过程可以利用执行一种生成被应用于传输逻辑或接收机逻辑设置的一组系数的算法的软件应用。
[0077]在一些实施例中,该软件应用从存储单元或元件(例如,配置和状态寄存器)读取与耦合到总线接口链路的设备(例如,根联合体设备或端点设备)相关联的最大震荡(FS)值和低频(LF)值,并将这些值输入到算法中以生成要被应用于耦合到该总线接口链路的设备的发射机或接收机设置的一组系数。
[0078]在一些实施例中,在PCIe链路训练和均衡过程的阶段2或3期间,该软件应用生成要被应用于端点设备的发射机组件的系数,使得根联合体设备可以满足目标BER。
[0079]然而,在又一些实施例中,上行端口或下行端口的通道中存在的逻辑可被用来根据最大震荡值和低频值生成一组系数,如下文将更详细地描述的。
[0080]链路训练和均衡可在传输逻辑501/504或接收机逻辑502/503处执行。本领域普通技术人员可以明白,因为接收到的信号可能混有信道噪声,所以链路训练和均衡过程可能添加噪声并使与通常不用接收机逻辑502/503表征的给定通道相关联的信噪比(SNR)降级。因此,在一些实施例中,链路训练和均衡可在发射机侧处(例如,传输逻辑501/504)是有效的。
[0081]在附图中前行,图6是示出具有最佳预设和经优化的发射机系数的位误差率(BER)眼图的图的示意图。本领域普通技术人员可以明白,BER眼图是电子和光学通信信号的直观图形表示。如此,在通信信道中传送和接收的信号的质量可根据BER眼图的外观来判断。BER眼图可以帮助确定通信系统是否可在尽可能少误差的情况下忠实地传送各数据位。
[0082]图6示出了一个示图,示出了具有最佳预设系数的位误差率(BER)眼602的图601和具有经优化的发射机或接收机系数的BER眼604的图603。如图所示,图601中BER眼602的高度小于图603中BER眼604的高度。本领域普通技术人员可以明白,BER眼高度定义了该系统的噪声边际。在一些实施例中,与归因于信道噪声的较小BER眼相比,较高的BER眼指示通信信道中的较少噪声。
[0083]因此,根据本公开的一些实施例,图603中的BER眼604指示由于经优化的发射机或接收机设置而得到的通信信道中的较小噪声和较低的位误差率。或者,图601中的BER眼602指示归因于最佳预设系数的通信信道中的较大的噪声和较高的位误差率。
[0084]因此,在经优化的一组系数被应用于发射机或接收机组件(例如,传输逻辑或接收机逻辑)时,较低的位误差率可以在通信链路的信道(例如,总线接口链路的通道)中达到。如此,经优化的发射机或接收机系数考虑了通信链路的特定信道的物理特性。根据本公开的系统和方法包括标识最优发射机或接收机系数以降低位误差率,来提高通信系统内的数据传输性能。
[0085]图7是示出了 PCIe链路训练和均衡过程的阶段O的实施例的示意图700。如图所示,两个组件(根联合体设备701和端点设备703)经由通信链路的差分对705a/705b (示为箭头)彼此耦合。
[0086]此外,根联合体设备701和端点设备703包括用于启用这两个设备701、703之间的通信的传输逻辑(分别是702a、704b)和接收机逻辑(704a、704b)。在一些实施例中,根联合体设备701和端点设备703可分别被表征为下行端口和上行端口。
[0087]在一些实施例中,(例如,PCIe链路训练和均衡过程的)阶段O可包括从上行端口(例如,端点设备701)向下行端口(例如,根联合体设备703)传送第一数据集(例如,TSl有序集合、预设值、提不,等等)。
[0088]数据可按第一数据传输率在设备701、703之间传送。例如,第一数据传输率可以小于或等于与根联合体设备701相关联的第一最大数据传输率和与端点设备703相关联的第二最大数据传输率。
[0089]在本公开的一些实施例中,第一数据传输率大约是与第I代或第二代PCIe相关联的最大数据传输率。在一些实施例中,与第I代或第2代PCIe相关联的最大数据传输率可以是大约5千兆传输每秒(5GT/s)。
[0090]另外,在阶段O期间,设备701、703两者可以广告与每一设备701、703相关联的最大数据传输率。此外,在一些实施例中,设备701、703两者使得链路在第I代或第2代PCI快速处在特定BER下足以操作。例如,在转移到链路训练和均衡过程的下一阶段之前,设备701、703两者必须展现出它们可以在最小BER为10_4的情况下传送信号。在一些实施例中,如果目标BER没有达到,则链路可以按更低的数据传输率来操作
[0091]图8是示出了 PCIe链路训练和均衡过程的阶段I的实施例的示意图。如图所示,根联合体设备801和端点设备803 (具有发射机逻辑802a、804b和接收机逻辑802b、804a)已经转移到PCIe链路训练和均衡过程的阶段I。
[0092]在PCIe链路训练和均衡过程的阶段I中,设备801、803两者使得通信链路的每一通道在第二数据传输率下操作以交换第二数据集(例如,TSl有序集)。在一些实施例中,第二数据传输率大于第一数据传输。例如,第二数据传输率可以是大约8GT/S。另外,在阶段I期间,TSl有序集可以在这两个设备801、803之间交换。
[0093]最值得注意的是,在阶段I期间,设备801、803两者广告它们的最大震荡(FS)和低频(LF)值。在一些实施例中,FS值可被定义为发射机组件所生成的最大差分电压。
[0094]另外,根据本公开的一些实施例,发射机或接收机系数的总和应当等于FS:
[0095]FS= ICL11 -1CL11 +1 C+1
[0096]此外,根据本公开的一些实施例,LF值可被定义为发射机组件所生成的最小差分电压。LF值应当总是大于最小差分电压:
[0097]C0-1CL11 -1 C+11 ≥ LF
[0098]FS和LF值可被存储在相应TSl字段中并且经由TSl有序集的交换被广告。如下文将描述的,FS和LF值可被用在系数的计算中,这些系数可被应用于每一设备801、803的发射机或接收机设置。
[0099]在一些实施例中,一旦接收到FS和LF值,它们就被存储在每一设备801、803的存储单元中。例如,FS和LF值被存储在配置和状态寄存器中。在一些实施例中,配置和状态寄存器可被实现为触发器设备元件。
[0100]一旦被存储,本公开就提供根据FS和LF值计算也被存储在配置和状态寄存器中的一组系数(例如,C0, Cf C+1)的机制。在一些实施例中,计算得到的一组系数包括前指针(pre-cursor)分量、指针(cursor)分量、以及后指针(post-cursor)分量。
[0101]每一设备801、803中可存在多个配置和状态寄存器。每一配置和状态寄存器可具有数十位的存储容量。总计而言,配置和状态寄存器可具有成百上千数据位的存储容量。
[0102]在一些实施例中,逻辑可存在于每一设备801、803的端口(例如,通道)内,这可使用FS和LF值作为输入来确定(例如,计算)一组系数。最值得注意的是,在本公开的一些实施例中,计算得到的一组系数是沿最大推进线的中点的坐标。
[0103]在附图中继续,图9是示出了列出可被应用于发射机或接收机设置的前指针和后指针系数的集合的表900的示意图。如图所示,X轴指示后指针值,而y轴表示前指针值。最值得注意的是,对角线定义了最大推进线901。最大推进线可被定义为在单个位间隔存在极性反转时出现的主推进。
[0104]最大推进可以根据下式来计算:
[0105]最大推进=201og1(lvd/vb
[0106]本领域普通技术人员应当理解,最大推进或最大推进线不是恒定的。如此,如果链路由于重设、热插拔断开连接/连接而改变,最大推进值或最大推进线可以改变。
[0107]此外,表900包括多个片903。在一些实施例中,每一个片903表不一系数。另外,片中的数字表示预设,而最大推进线901下方的片902是不合法的系数空间。
[0108]因为利用恒定的预定发射机或接收机链路训练和均衡设置是不可能的,因为需要与具有不同特性的设备建立通信链路的事实。如此,发射机和接收机链路训练和均衡系数设置必须被动态地协商。
[0109]如上所述,远程接收机被用来确定目标BER是否达到,如BER眼高度所指示的。因此,链路训练和均衡过程可以经历多个周期来达到最优系数设置。
[0110]例如,链路训练和均衡过程将对应于系数3/5的特定预设应用于发射机或接收机设置。如果目标BER没有达到,如所生成的BER眼的高度所指示的,则新系数可被生成以找出满足目标BER的发射机和接收机设置。
[0111]例如,可以揭示端点设备接收机需要较少后指针但较多前指针。如此,端点设备可以向远程联合体设备发送系数(4/4 )。进而,远程联合体设备将新系数(4/4 )应用于发射机设置并向端点设备回应(4/4)。
[0112]一旦端点设备接收到来自远程联合体设备的信号,该信号被该端点的接收机评估。该评估可以确定例如后指针值是足够的但需要更多前指针。该过程可以继续,直至标识了最优系数值。
[0113]图10是示出了 PCIe链路训练和均衡过程的阶段2的实施例的示意图。如图所示,根联合体设备1001和端点设备1003 (具有发射机逻辑1002a、1004b和接收机逻辑1002b、1004a)已经转移到PCIe链路训练和均衡过程的阶段2。
[0114]在阶段2,上行端口(例如,端点设备)帮助下行端口(例如,根联合体设备)细调其发射机设置单元,在通信链路的所有信道(例如,通道)上达到BER或者小于或等于10_12。系数的示例性列表(5/5、6/5、7/4)指示多次迭代可被执行以达到最优链路训练和均衡发射机(或接收机)设置。
[0115]图11是示出了 PCIe链路训练和均衡过程的常规阶段3的示意图。如图所示,根联合体设备1101和端点设备1103 (具有发射机逻辑1102a、1104b和接收机逻辑1102b、1104a)已经转移到PCIe链路训练和均衡过程的阶段3。最值得注意的是,根据本公开的系统和方法可以只用单次迭代来采用链路训练和均衡过程的阶段3。
[0116]在一些实施例中,下行端口(例如,根联合体设备)利用与上行端口相关联的FS和LF值来计算可被应用于该上行端口的发射机组件的一组系数。在一些实施例中,计算得到的该组系数可以是沿最大推进线的中点的坐标。
[0117]在一些实施例中,推进线上的中点可以根据以下描述的算法来计算:
[0118]情况A
[0119]如果FS+LF是偶数并且可被4整除,则O1=G1=绝对值[(FS-LF) /4],且C0=FS-CL1-Cf
[0120]例如,如果FS=40且LF=20,则CL1和C+1=5且CQ=30。因而,最大推进线的中点和计算得到的系数是{5,30,5}。
[0121]情况B
[0122]如果FS+LF是偶数但不能被4整除,则CL1=向上取整[(FS-LF) /4],C+1=向下取整[(FS-LF) /4],且 C0=FS-C_「C+1。
[0123]例如,如果FS=42且LF=20,则(^=6,C+1=5且CQ=31。因而,最大推进线的中点和计算得到的系数是{6,31,5}.
[0124]情况C
[0125]如果?5+1^是奇数并且斤5-1^-1=值)可被4整除,则O1=G1=向下取整,且C0=FS-CL1-Cf
[0126]例如,如果FS=41且LF=20,则(^=(:+1=5且CQ=31。因而,最大推进线的中点和计算得到的系数是{5,31,5 }.
[0127]情况D
[0128]如果FS+LF是奇数并且(FS -LF-1=值)不可被4整除,则CL1=向上取整,C+1=向下取整,且 Ctl=FS-CL1-C^
[0129]例如,如果?5+1^是奇数并且斤5-1^-1=值)不可被4整除,则CL1=向上取整,C+1=向下取整,且 Ctl=FS-CL1-C^
[0130]例如,如果FS=42且LF=23,则(^=5,C+1=4且CQ=33。因而,最大推进线的中点和计算得到的系数是{5,33,4}.
[0131]另外,所生成的系数可被应用于预定或预计算的偏移。例如,在后硅实验室测试期间,设备可被表征,使得在设备表现得低于理想的情况下按通道来计算偏移。如此,所生成的系数可以不直接应用,然而可在考虑了这些预定或预计算的偏移的情况下应用。
[0132]还应当理解,确定与最大推进线的中点坐标相关联的系数可以是起始点并且细调可被执行以增加沿每一通道和链路的通信性能。如此,本公开提供超出中点坐标起始点到任何其他推进线中的任何其他点的灵活性(带有某些误差边界)。
[0133]例如,一旦计算得到了初始系数(例如,最大推进线的中点坐标),则通过向计算得到的该组系数加上一个预定义的常数或一组预定义常数,新的一组系数可被计算,根据本公开的一些实施例,计算得到的该组系数表示最大推进线的中点的中点坐标。
[0134]例如,“I”可以是可被应用以生成新的一组系数以供细调的预定义常数。例如,如果计算得到的一组系数是(3,5,4),则应用预定义常数“I”会产生新的一组系数(4,6,5),这可被应用于耦合到该通信链路的设备的发射机或接收机设置。如果例如该组预定义常数是(I, O, O),则计算得到的新的一组系数会是(4,5,4)。
[0135]另外,最小均方根(LMS)算法可被用于细调。在本公开的一些实施例中,上行端口或下行端口的每一通道可具有在此预配置的LMS能力。
[0136]本领域普通技术人员应当明白,各预定义常数和/或预定义常数集合可被应用以计算新的一组或多组系数。此外,唯一的一组预定义常数或一组系数可按任何次序或迭代被应用,以在细调该通道或链路的通信性能时生成新的一组或多组系数。
[0137]因此,新的一组或多组系数可以根据以下等式生成:
[0138]I)Cm[5:0]=Cml[5:0] + (csr_add_precursor_wire[2:0] - csr_sub_precursor_wire[2:0])
[0139]2)Cp[5:0]=Cpl [5:0] + (csr_add_postcursor__wire [2:0] - csr_sub_postcursor_wire[2:0])
[0140]3) C0=FS - Cm-Cp
[0141]在一些实施例中,配置状态和寄存器是按束或按通道的3位配置寄存器,它们被用来加或减初始计算得到的值以伸展到所需位置。
[0142]此外,本公开的各实施例还定义配置寄存器FS_thresh0ld (FS阈值)。例如,如果在链路训练和均衡过程的阶段I期间捕捉到的链路伙伴FS值大于FS_threshold,使用以上等式1、2以及3。然而,如果FS值小于FS_threshold,则对于前指针和后指针值,配置寄存器csr_add和csr_sub值除以2以提供更大的灵活性。
[0143]在一些实施例中,根据本公开的系统和方法可以用单次迭代来采用链路训练和均衡过程的阶段3,使得根联合体设备的下行端口更加有效和高效。
[0144]应当理解,本公开可被改编,使得链路训练和均衡过程的阶段2可采用在此描述的方法以在该过程的阶段2期间生成下行端口的系数。因此,本公开不限于链路训练和均衡过程的阶段3并且可被用来生成远程设备、本地设备、远程联合体设备或端点设备的发射机或接收机设立的系数。此外,本公开可顺应以允许细调(如果需要的话)。
[0145]图12中示出了根据本公开的一些实施例的用于链路训练和均衡的方法1200。在一些实施例中,方法1200开始,根据框1201,沿通信链路的至少一个信道将第一数据集从链路伙伴组件传递给第一组件。
[0146]第一数据集可包括有序集、预设、提示、FS以及LF值,等等。另外,第一组件可被表征为根联合体或端点设备并且可包括上行端口或下行端口。
[0147]接着,根据框1202,根据FS和LF值计算第一组系数。第一组系数可根据上述算法来计算。在一些实施例中,从第一组件的链路伙伴检索到的FS和LF值被存储在第一组件内的存储实体中(例如,配置和状态寄存器)。
[0148]在本公开的一些实施例中,端口的各单独通道上的逻辑被用来计算第一组系数。在一些实施例中,该逻辑嵌入在经历链路训练和均衡过程的设备(例如,根联合体设备或端点设备)的端口内。
[0149]接着,计算得到的该组系数被存储在第一组件内的存储实体中(框1203)。对于一些实施例,计算得到的该组系数被存储在第一组件的端口中。例如,计算得到的该组系数可被存储在该端口的配置寄存器中。
[0150]及时地,第一组件将计算得到的该组系数发送给链路伙伴组件。接着,应用计算得到的第一组系数来设立链路伙伴的发射机组件(框1204)。
[0151]另外,根据本公开的一些实施例,如果与通信链路相关联的位误差率超过目标位误差率,附加数据可从第一组件被发送。
[0152]图13示出了根据本公开的一实施例的用于链路训练和均衡的另一方法1300。在一些实施例中,方法1300始于框1301——具有下行端口的第一组件和具有上行端口的链路伙伴组件以第I代/第2代速度来向每一端口传递每一通道的发射机当前值和接收机预设提示。
[0153]接着,第一组件和链路伙伴组件两者使得链路足以按第3代速度在最小BER10~-4的情况下操作(框1302)。
[0154]框1303还提供第一组件存储与链路伙伴组件相关联的最大震荡值和低频值。随后,第一组件根据与第一组件相关联的最大震荡和低频值计算第一组系数并调整第一组件的发射机设置(框1304)。
[0155]最后,方法1300的框1305提供第一组件根据与链路伙伴组件相关联的最大震荡和低频值计算第二组系数并调整链路伙伴组件的发射机设置。
[0156]因此,方法1300描述耦合到总线接口的单个组件可如何实现本公开的链路训练和均衡过程的阶段2和3的方式。如此,本公开可顺应,使得耦合到总线接口的设备(例如,第一组件和链路伙伴组件)在链路训练和均衡过程期间可丢弃将设置、系数等应用于组件的发射机设置的请求。
[0157]以下示例涉及进一步的实施例。这些示例中的特性可用于一个或多个实施例中的任何地方。例如,在此描述的装置或系统的所有可任选特征也可相对于在此描述的方法或过程来实现。
[0158]示例1:一种系统可包括响应于第一组件和第一组件的链路伙伴组件经历均衡,第一组件用于向链路伙伴组件传递第一数据集。第一组件可包括用于接收第一均衡数据集的至少一个接收机。第一组件可进一步包括耦合到所述接收机的用于存储所述均衡数据的系数存储。另外,耦合到所述系数存储的系数逻辑用于基于第一均衡数据集生成第一组系数。第一组件用于向链路伙伴组件发送第一组系数。
[0159]示例2:第一组系数包括沿最大推进线的中点坐标。
[0160]示例3:第一组件还可以是根联合体组件且链路伙伴组件是端点组件。
[0161]示例4:链路组件沿PCIe总线接口链路向第一组件发送第一均衡数据集。
[0162]示例5:第一均衡数据集包括最大震荡值和低频值。
[0163]示例6:响应于第一组件和链路伙伴组件经历均衡过程,第一组件向链路伙伴组件传递第二数据集,其中所述链路伙伴组件将所述第二数据集的至少一部分应用于所述链路伙伴组件的发射机设立。
[0164]示例7:所生成的第一组系数包括前指针分量、指针分量、以及后指针分量。
[0165]示例8:一种方法,包括沿通信链路的至少一个信道从链路伙伴组件向第一组件传递第一数据集。所述第一数据集包括最大震荡值和低频值。最大震荡值和低频值被存储在第一组件的至少一个寄存器中。执行指令以根据最大震荡值和低频值计算第一组系数。根据最大震荡值和低频值计算第一组系数。将计算得到的第一组系数存储在第一组件的至少一个寄存器中。应用计算得到的第一组系数来设立链路伙伴组件的发射机组件。
[0166]示例9:第一数据集包括第一组预设值和第一组预设提示,第一组预设值包括用于设立链路伙伴组件的发射机组件的第二组系数,第一组预设提示包括用于设立链路伙伴组件的接收机组件的第二组系数。
[0167]示例10:计算得到的第一组系数包括前指针系数、指针系数、或后指针系数中的至少一个。
[0168]示例11:应用于链路伙伴组件的发射机组件的第一组系数使得链路伙伴组件能够以小于或等于每112位I位误差的位误差率向第一组件传送数据。
[0169]示例12:在第3代PCI链路训练和均衡过程的阶段3期间,计算得到的第一组系数被应用于链路伙伴组件的发射机组件。
[0170]示例13: —种包括下行端口的装置,响应于经历链路训练和均衡过程,所述下行端口从上行端口接收第一有序集。所述下行端口包括用于从所述上行端口接收数据的接收机组件,且所述上行端口包括用于向所述下行端口传送数据的发射机组件。所述上行端口和所述下行端口是链路伙伴。第一有序集包括与所述上行端口相关联的最大震荡值和低频值。所述下行端口包括用于执行指令来根据所述第一有序集的最大震荡值和低频值计算第一组系数的逻辑。所述下行端口包括用于存储计算得到的第一组系数的至少一个配置寄存器。所述上行端口将计算得到的第一组系数应用于所述上行端口的发射机设立。
[0171]示例14:所述上行端口还包括从所述下行端口接收计算得到的第一组系数的接收机。
[0172]示例15:计算得到的第一组系数被存储在单个配置寄存器中。
[0173]示例16:所述至少一个配置寄存器被实现为触发器存储元件。
[0174]示例17:所述至少一个配置寄存器内的数据提供所述上行端口的状态。
[0175]示例18:所述上行端口耦合到启用触摸的显示设备。
[0176]示例19:一种用于耦合到总线接口链路的设备的链路训练和均衡过程,包括:从第一组件向链路伙伴组件以及从链路伙伴组件向所述第一组件传递一组发射机预设值和一组接收机提示;配置所述第一组件和所述链路伙伴组件以使得所述链路在第一位误差率下操作;将与所述链路伙伴组件相关联的最大震荡值和低频值存储在所述第一组件内的存储实体中;根据与所述第一组件相关联的最大震荡值和低频值计算第一组系数;基于所述第一组系数调整所述第一组件的发射机设置;根据与所述链路伙伴组件相关联的最大震荡值和低频值计算第二组系数;以及基于所述第二组系数调整所述链路伙伴组件的发射机设置。
[0177]示例20:配置所述第一组件和所述链路伙伴组件以使得所述链路能在小于所述第一位误差率的第二位误差率下操作。
[0178]示例21:在调整所述第一组件的发射机设置之前,将一组偏移应用于所述第一组件的发射机设置。
[0179]不例22:第一位误差率是每10 4位I位误差。
[0180]示例23:所述第一组系数由所述第一组件的端口内的逻辑来计算。
[0181]示例24:—种装置,包括:上行端口,包括用于传送数据信号的发射机逻辑、用于从下行端口接收数据信号的接收机逻辑;以及用于存储根据与所述上行端口相关联的最大震荡值和低频值计算得到的第一组系数的存储单元。
[0182]示例25:所述发射机逻辑可以采用所述第一组系数。
[0183]示例26:所述发射机逻辑用于向下行端口传送数据信号。
[0184]示例27:所述存储单元具有6字节的存储容量。
[0185]示例28:—种存储计算机可读指令的非暂态计算机可读介质,所述计算机可读指令供机器执行一种方法以用于:沿通信链路的至少一个信道从链路伙伴组件向第一组件传递第一数据集;其中所述第一数据集包括最大震荡值和低频值;其中所述最大震荡值和所述低频值被存储在所述第一组件的至少一个寄存器中;执行指令以根据所述最大震荡值和所述低频值计算第一组系数;将计算得到的第一组系数存储在所述第一组件的至少一个寄存器中;以及应用计算得到的第一组系数来设立所述链路伙伴组件的发射机组件。
[0186]示例29:—种包括机器可读指令的机器可读存储,所述机器可读指令在被执行时,实现以上任何示例所要求保护的方法或装置。
[0187]示例30:—种包括用于执行以上任何示例所要求保护的方法的装置的设备。
[0188]尽管是参考数量有限的实施例来描述本公开的,但是,本领域技术人员将从其中理解很多修改和变体。所附权利要求书涵盖所有这样的修改和变体都将在本发明的真正的精神和范围内。
[0189]设计会经历多个阶段,从创新到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,具有逻辑和/或晶体管门电路的电路级模型可在设计流程的其他阶段产生。此夕卜,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理配置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是在不同掩模层上对用于生成集成电路的掩模指示不同特征的存在与否的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波时,执行电信号的复制、缓冲或重传情况时,制作一个新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的项目(诸如,编码在载波中的信息)。
[0190]在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
[0191]在一个实施例中,使用短语“用于”或“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定和/或所确定的任务。在该示例中,没有操作的装置或其元件仍然“被配置成”执行指定任务,如果它被设计、耦合、和/或互连以执行所述指定任务的话。作为纯说明性示例,在操作期间,逻辑门可以提供O或I。但逻辑门“被配置成”向时钟提供启用信号不包括可提供I或O的每一潜在逻辑门。而是,该逻辑门是以在操作期间所输出的I或O用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是集中于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
[0192]此外,在一个实施例中,使用术语能够‘/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上注意的,在一个实施例中,用于、能够、或能用于指的是装置、逻辑、硬件、和/或元件的潜在状态,潜在该装置、逻辑、硬件、和/或元件没有正在操作而是被以如下方式设计:以指定方式来启用装置的使用。
[0193]如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为I和0,这简单地表示了二进制逻辑状态。例如,I指的是逻辑高电平,O指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字母A。因此,值包括能保持在计算机系统中的信息的任何表示。
[0194]而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑I之类的第一值可表示默认或初始状态,而诸如逻辑O之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意数量的状态。
[0195]上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM (SRAM)或动态RAM (DRAM)之类的随机存取存储器(RAM) ;R0M ;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;其它形式的用于保持从短暂(传播)信号(例如载波、红外信号、数字信号)接收的信息的存储设备;等等,这些与可从其接收信息的非瞬态介质相区别。
[0196]被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在系统的存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)中。进一步的,指令可经由网络或其他计算机可读介质来分发。因此,计算机可读介质可包括用于以机器(诸如,计算机)可读的格式存储或发送信息的任何机制,但不限于:磁盘、光盘、致密盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程只读存储器(EEPR0M)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
[0197]贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在一些实施例中”不一定指的是同一实施例。而且,特定特征、结构、或特性可按照任何合适的方式在一个或多个实施例中组合。
[0198] 在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。而且,实施例和其它示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
【权利要求】
1.一种用于链路训练和均衡的系统,包括: 响应于经历均衡的第一组件和所述第一组件的链路伙伴组件,所述第一组件用于向所述链路伙伴组件传递第一数据集; 其中所述第一组件包括: 用于接收第一均衡数据集的至少一个接收机; 耦合到所述接收机的用于存储所述均衡数据的系数存储; 耦合到所述系数存储的用于基于所述第一均衡数据集生成第一组系数的系数逻辑;以及 其中所述第一组件用于向所述链路伙伴组件发送所述第一组系数。
2.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,所述第一组系数包括沿最大推进线的中点坐标。
3.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,所述第一组件是根联合体组件,且所述链路伙伴组件是端点组件。
4.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,所述第一组件经由外围部件互连快速(PCIe)总线接口链路向所述链路伙伴发送所述第一组系数。
5.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,所述第一组均衡数据集包括最大震荡值和低频值。
6.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,还包括响应于所述第一组件和所述链路伙伴组件经历所述均衡过程,所述第一组件向所述链路伙伴组件传递第二数据集,其中所述链路伙伴组件将所述第二数据集的至少一部分应用于所述链路伙伴组件的发射机设立。
7.如权利要求1所述的用于链路训练和均衡的系统,其特征在于,所生成的第一组系数包括前指针分量、指针分量以及后指针分量。
8.一种用于链路训练和均衡的方法,包括: 沿通信链路的至少一个信道从链路伙伴组件向第一组件传递第一数据集; 其中所述第一数据集包括最大震荡值和低频值; 其中所述最大震荡值和所述低频值被存储在所述第一组件的至少一个寄存器中; 执行指令以根据所述最大震荡值和所述低频值来计算第一组系数; 根据所述最大震荡值和所述低频值来计算第一组系数; 将计算得到的第一组系数存储在所述第一组件的至少一个寄存器中;以及 应用计算得到的第一组系数来设立所述链路伙伴组件的发射机组件。
9.如权利要求8所述的用于链路训练和均衡的方法,其特征在于,所述第一数据集包括第一组预设值和第一组预设提示,所述第一组预设值包括用于设立所述链路伙伴组件的发射机组件的第二组系数,所述第一组预设提示包括用于设立所述链路伙伴组件的接收机组件的第二组系数。
10.如权利要求8所述的用于链路训练和均衡的方法,其特征在于,计算得到的第一组系数包括前指针系数、指针系数、或后指针系数中的至少一个。
11.如权利要求8所述的用于链路训练和均衡的方法,其特征在于,应用于所述链路伙伴组件的发射机组件的所述第一组系数使得所述链路伙伴组件能够以小于或等于每112位I位误差的位误差率向所述第一组件传送数据。
12.如权利要求8所述的用于链路训练和均衡的方法,其特征在于,在第3代PCI链路训练和均衡过程的阶段3期间,计算得到的第一组系数被应用于所述链路伙伴组件的发射机组件。
13.一种装置,包括: 下行端口,响应于经历链路训练和均衡过程,所述下行端口从上行端口接收第一有序集; 其中所述下行端口包括用于从所述上行端口接收数据的接收机组件,且所述上行端口包括用于向所述下行端口传送数据的发射机组件; 其中所述上行端口和所述下行端口是链路伙伴; 其中所述第一有序集包括与所述上行端口相关联的最大震荡值和低频值; 其中所述下行端口包括用于执行指令来根据所述第一有序集的最大震荡值和低频值计算第一组系数的逻辑; 其中所述下行端口包括用于存储计算得到的第一组系数的至少一个配置寄存器;以及 其中所述上行端口将计算得到的第一组系数应用于所述上行端口的发射机设立。
14.如权利要求13所述的装置,其特征在于,所述上行端口还包括从所述下行端口接收计算得到的第一组系数的接收机。
15.如权利要求13所述的装置,其特征在于,计算得到的第一组系数被存储在单个配置寄存器中。
16.如权利要求13所述的装置,其特征在于,所述至少一个配置寄存器被实现为触发器存储元件。
17.如权利要求13所述的装置,其特征在于,所述至少一个配置寄存器内的数据提供所述上行端口的状态。
18.如权利要求13所述的装置,其特征在于,所述上行端口耦合到启用触摸的显示设备。
19.一种用于耦合到总线接口链路的设备的链路训练和均衡过程,包括: 从第一组件向链路伙伴组件以及从链路伙伴组件向所述第一组件传递一组发射机预设值和一组接收机提示; 配置所述第一组件和所述链路伙伴组件以使得所述链路在第一位误差率下操作;将与所述链路伙伴组件相关联的最大震荡值和低频值存储在所述第一组件内的存储实体中; 根据与所述第一组件相关联的最大震荡值和低频值计算第一组系数; 基于所述第一组系数调整所述第一组件的发射机设置; 根据与所述链路伙伴组件相关联的最大震荡值和低频值计算第二组系数;以及 基于所述第二组系数调整所述链路伙伴组件的发射机设置。
20.如权利要求19所述的链路训练和均衡过程,其特征在于,还包括配置所述第一组件和所述链路伙伴组件以使得所述链路能在小于所述第一位误差率的第二位误差率下操作。
21.如权利要求19所述的链路训练和均衡过程,其特征在于,还包括在调整所述第一组件的发射机设置之前,将一组偏移应用于所述第一组件的发射机设置。
22.如权利要求19所述的链路训练和均衡过程,其特征在于,所述第一位误差率是每10~4位I位误差。
23.权利要求19所述的链路训练和均衡过程,其特征在于,所述第一组系数是由所述第一组件的端口内的逻 辑来计算的。
【文档编号】G06F13/42GK104050136SQ201410097121
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月15日
【发明者】D·达斯莎玛, K·L·S·P·盖戴纳戈凡卡塔, P·贾亚普兰卡什巴拉德沃杰 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1