用于实施信道均衡训练的多道方法

文档序号:6525068阅读:685来源:国知局
用于实施信道均衡训练的多道方法
【专利摘要】包括对多个均衡系数集实施第一遍测试以过滤多个均衡系数集,来产生一个或多个经过滤的均衡系数集的方法。每个经过滤的均衡系数集满足第一预定阈值。方法还包括对一个或多个经过滤的均衡系数集实施第二遍测试以确定满足第二预定阈值的最终的均衡系数集,其中第二遍测试相比第一遍测试产生更准确的结果。
【专利说明】用于实施信道均衡训练的多道方法
【技术领域】
[0001]本发明总体涉及数据传送,并且更具体地涉及用于实施信道均衡训练的方法。
【背景技术】
[0002]典型的数据连接器,诸如外围部件接口(PCI)或者PCI express (PCIe),允许计算机系统内的不同处理单元彼此交换数据。例如,常规计算机系统可以包括跨PCIe总线与图形处理单元(GPU)交换数据的中央处理单元(CPU)。
[0003]当跨数据连接器在传送信道上传送信号时,一些频率分量可能比另一些衰减得更多,这可能使得信号在接收端难以辨认。随着传送速度变得更快,由于噪声影响更严重传送因此变得更易于出现错误。在高速传送信道中,信号的质量非常重要。对抗这种倾向的一种技术是“均衡”信道以使得在输入端的信号的频率域属性在输出端如实重新产生,从而致使更少的错误。高速串行通信协议比如PCIe使用均衡器来准备数据信号用于传送。
[0004]均衡可以在信道的发射端和接收端两者上实施。对于发射均衡,信号可以在其发送之前在发射端被重塑以尝试克服将由信道引入的失真。在接收端,可以再修复信号以改善信号质量。
[0005]对于PCIe中的发射均衡,称为均衡系数的两个参数可以用于调谐发射器。典型的系统可以有数百个均衡系数的组合,并且这些组合中的一些相比另一些将会产生更好的均衡结果。在高速传送信道中信号质量非常重要,因此最优系数集对于确保准确的传送至关重要。在均衡过程期间,需要选择满足系统的性能要求的系数的一个组合。此外,选择该组合需要在固定的时间限制内进行,使得系统可以启动或者开始其他过程。测试每一个系数组合来发现最好的一个是难以实施的,因为该方法通常将需要大量时间。此外,用于测试系数组合的当前方法经常会导致选择次优的组合。
[0006]因此,本领域所需要的是,以更有效的方式测试并选择用于高速总线的均衡系数的技术。

【发明内容】

[0007]本发明的一个实施例阐述了用于分析用于高速数据总线的均衡系数的方法。方法包括对多个均衡系数集实施第一遍测试以过滤多个均衡系数集,来产生一个或多个经过滤的均衡系数集的。每个经过滤的均衡系数集满足第一预定阈值。方法还包括对一个或多个经过滤的均衡系数集实施第二遍测试以确定满足第二预定阈值的最终的均衡系数集。第二遍测试相比第一遍测试产生更准确的结果。
[0008]有利地,使用以上技术选择均衡系数允许更快选择满足系统所要求的质量标准的系数。
【专利附图】

【附图说明】
[0009]因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
[0010]图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
[0011]图2是根据本发明的一个实施例的、用于图1的计算机系统的并行处理子系统的框图;
[0012]图3是发射的信号和接收的信号的常规示图;
[0013]图4是导致错误的发射的数据和接收的数据的常规示图;
[0014]图5是根据本发明一个实施例的、接收端处的信号在均衡前和均衡后的示图;
[0015]图6是来自振荡器的眼图的常规示图;
[0016]图7是根据本发明一个实施例的、均衡系数的映射图的示图;
[0017]图8A和图SB示出了根据本发明一个实施例的、用于实施均衡系数的映射图上的粗粒度搜索的一种技术;
[0018]图9是根据本发明一个实施例的、用于实施均衡系数的映射图上的粗粒度搜索的另一种技术的示图;
[0019]图10是根据本发明一个实施例的、用于实施均衡系数的映射图上的细粒度搜索的技术的示图;
[0020]图11是示出根据本发明一个实施例的、用于信道均衡训练的示范性多道方法的流程图;
[0021]图12是示出根据本发明一个实施例的、用于实施粗粒度搜索的示范性技术的流程图;
[0022]图13是示出根据本发明一个实施例的、用于实施粗粒度搜索的另一种示范性技术的流程图;
[0023]图14是示出根据本发明一个实施例的、用于实施细粒度搜索的示范性技术的流程图。
【具体实施方式】
[0024]在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。在其他实例中,未对已知的特征进行描述以免混淆本发明。
[0025]系统概述
[0026]图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU) 102和包括设备驱动程序103的系统存储器104。CPU102和系统存储器104经由可以包括存储器桥105的互连路径通信。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106 (例如超传输(HyperTransport)链路)连接到输入/输出(I/O)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108 (例如键盘、鼠标)接收用户输入并且经由路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或其他通信路径113 (例如外围部件互连(PCI)express、加速图形端口(AGP)或超传输链路)耦连到存储器桥105 ;在一个实施例中,并行处理子系统112是将像素传递到显示设备110 (例如,常规的阴极射线管(CRT)或者基于液晶显示器(IXD)的监视器)的图形子系统。系统盘114也连接到I/O桥107。交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)或其他端口连接、压缩光盘(⑶)驱动器、数字视频光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的互连各种部件的通信路径可以使用任何适合的协议实现,诸如PC1、PCIExpreSS (PCIe)、AGP、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
[0027]PPUl 12配置为执行诸如设备驱动程序103的软件应用程序,其允许PPUl 12生成可以跨通信路径113传送的任意包类型。那些包类型由通信路径113所使用的通信协议指定。在将新的包类型引入通信协议的情况中(例如由于增强通信协议),PPU112可以配置为基于新的包类型来生成包并使用新的包类型来跨通信路径113与CPU102(或者其他处理单元)交换数据。[0028]在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件集成,诸如存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
[0029]应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上。大型实施例可以包括两个或更多个CPU102以及两个或更多个并行处理系统112。本文所示的特定部件是可选的;例如,任何数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
[0030]图2示出了根据本发明的一个实施例的并行处理子系统112。如所示的,并行处理子系统112包括一个或多个并行处理单元(PI3U) 202,每个并行处理单元202都耦连到本地并行处理(PP)存储器204。通常,并行处理子系统包括U个PPU,其中U≥1。(本文中,类似对象的多个实例需要时以标识对象的参考数字和标识实例的括号中的数字来表示。)PPU202和并行处理存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现。
[0031]再参考图1,在一些实施例中,并行处理子系统112中的一些或所有PPU202是具有渲染管线的图形处理器,其可以配置为实施与下述相关的各种任务:经由存储器桥105和总线113从CPU102和/或系统存储器104所供应的图形数据生成像素数据,与本地并行处理存储器204 (可被用作图形存储器,包括例如常规帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110等等。在一些实施例中,并行处理子系统112可包括一个或多个作为图形处理器而操作的PPU202以及一个或多个用于通用计算的其他PPU202。PTO可以是同样的或不同的,并且每个PTO可具有自己的专用并行处理存储器设备或不具有专用并行处理存储器设备。一个或多个PPU202可输出数据到显示设备110,或者每个PPU202可输出数据到一个或多个显示设备110。
[0032]在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于每个PPU202的命令流到入栈缓冲区(pushbuffer)中(在图1或图2中未明确示出),该入栈缓冲区可位于系统存储器104、并行处理存储器204、或CPU102和PPU202都可访问的其他存储位置中。PPU202从入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。
[0033]现在返回参考图2,每个PPU202包括经由连接到存储器桥105 (或者,在一个替代性实施例中,直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信的I/O单元205。PPU202到计算机系统100的其余部分的连接也可以变化。在一些实施例中,并行处理子系统112可实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,PPU202可以和诸如存储器桥105或I/O桥107的总线桥集成在单个芯片上。而在其他实施例中,PPU202的一些或所有元件可以和CPU102集成在单个芯片上。
[0034]在一个实施例中,通信路径113是PCIe链路,如本领域所知的,其中专用通道被分配到每个PPU202。也可以使用其他通信路径。如以上所述,反向流动互连也可以用于实现通信路径113以及计算机系统100、CPU102或者PPU202中的任何其他通信路径。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口 206, 而将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引导到存储器交叉开关单元210。主机接口 206读取每个入栈缓冲区,并且将由入栈缓冲区指定的工作输出到前端212。
[0035]有利地,每个PPU202都实现高度并行处理架构。如详细示出的,PPU202 (O)包括处理集群阵列230,该阵列230包括C个通用处理集群(GPC)208,其中C≥1。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。例如,在图形应用程序中,GPC208的第一集可以分配为实施曲面细分操作并产生用于补丁(patch)的基元拓扑,并且GPC208的第二集可以分配为实施曲面细分着色以评估用于基元拓扑的补丁参数并确定顶点位置和其他每顶点属性。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
[0036]GPC208经由工作分布单元200接收所要执行的处理任务,工作分布单元200从前端单元212接收定义处理任务的命令。处理任务包括将要处理的数据的索引,诸如,表面(补丁)数据、基元数据、顶点数据和/或像素数据,以及状态参数和定义数据将如何处理的命令(例如将执行什么程序)。工作分布单元200可以配置为取回与任务对应的索引,或者工作分布单元200可以从前端212接收索引。前端212确保在入栈缓冲区所指定的处理发起前,将GPC208配置为有效状态。
[0037]例如当PPU202用于图形处理时,用于每个补丁(patch)的处理工作量被分为大致相等大小的任务以能够将曲面细分处理分布到多个GPC208。工作分布单元200可以配置为以能够提供任务到多个GPC208用于处理的频率产生任务。相反,在常规系统中处理典型由单个处理引擎来实施,而其他处理引擎保持空闲,在开始其处理任务之前等待该单个处理引擎完成任务。在本发明的一些实施例中,GPC208的各部分配置为实施不同类型的处理。例如第一部分可以配置为实施顶点着色和拓扑生成,第二部分可以配置为实施曲面细分和几何着色,并且第三部分可以配置为实施屏幕空间的像素着色以产生经渲染的图像。由GPC208产生的中间数据可以存储在缓冲区中以允许在GPC208之间传送中间数据用于进一步处理。
[0038]存储器接口 214包括D个分区单元215,每个分区单元215直接耦连到并行处理存储器204的一部分,其中D≥I。如所示的,分区单元215的数目一般等于DRAM220的数目。在其他实施例中,分区单元215的数目也可以不等于存储器设备的数目。本领域的技术人员应该理解动态随机存取存储器(DRAM) 220可以用其他合适的存储设备来替代并且可以是一般常规的设计。因此省略了详细描述。诸如帧缓冲区或纹理映射图的渲染目标可以跨DRAM220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用并行处理存储器204的可用带宽。
[0039]任何一个GPC208都可以处理要被写到并行处理存储器204内的任何DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任何分区单元215的输入或到另一个GPC208用于进一步处理。GPC208通过交叉开关单元210与存储器接口 214通信,以对各种外部存储器设备进行读取或写入。在一个实施例中,交叉开关单元210具有到存储器接口 214的连接以和I/O单元205通信,以及到本地并行处理存储器204的连接,从而使得在不同GPC208内的处理内核能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2所示的实施例中,交叉开关单元210直接与I/O单元205连接。交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
[0040]另外,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素着色器程序)等等。PPU202可将数据从系统存储器104和/或本地并行处理存储器204转移到内部(片上)存储器中,处理该数据,并且将结果数据写回到系统存储器104和/或本地并行处理存储器204,其中这样的数据可以由其他系统部件访问,所述其他系统部件包括CPU102或另一个并行处理子系统112。
[0041]PPU202可配备有任何容量(amount)的本地并行处理存储器204,包括没有本地存储器,并且可以以任何组合方式使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实施例中,PPU202可以是图形处理器。在这样的实施例中,将不提供或几乎不提供专用的图形(并行处理)存储器,并且PPU202会以排他或几乎排他的方式使用系统存储器。在UMA实施例中,PPU202可集成到桥式芯片中或处理器芯片中,或作为具有高速链路(例如,PCIe)的分立芯片提供,所述高速链路经由桥式芯片或其他通信手段将PPU202连接到系统存储器。
[0042]如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理内核、不同容量的本地并行处理存储器等等。在存在多个PPU202的情况下,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形式因素来实现,包括台式电脑、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
[0043]使用可变长度训练评估周期的均衡
[0044]图3是发射的信号和接收的信号的常规示图。在计算机系统中,信号可以以I和O的形式沿电线传送到其目的地。由于信号经信道行进因此可能削弱,所以在目的可能难以确定所接收的比特是I还是O。输入信号10代表在信道的发射端处的数据I。输入信号10包括宽度大致为Tb的脉冲。输入信号12代表信道的发射端处的数据O。输出信号12也包括宽度大致为Tb的脉冲。输入信号10和12呈现为锐利的(sharp),类似阶跃函数。
[0045]图3的右侧示出在信道的接收端处的两个输出信号。输出信号20包括所接收的数据1,并且输出信号22包括所接收的数据O。这些输出信号由于码间干扰(ISI)而失真,并且因此输出信号和输入信号10和12的锐利外观不完全匹配。如果在接收端失真太多,那么I可能被误解为O (或者反之亦然),并且将会在传送中引入错误。
[0046]图4是导致错误的发射的信号和接收的信号的常规图示。在信道输入处的发射数据由波形30代表。波形30包括在信道上传送的I和O系列。波形30呈现为锐利的,具有I和O之间的清楚过渡。虚线代表限制电平,其标记数据I和数据O之间的分界线。波形40代表在接收端处的信号。因为信道中的干扰,所接收的信号可能失真并且没有呈现为和波形30代表的所发射的信号一样锐利。波形50代表波形40中的数据。换言之,当波形40转换为I和O时,结果是波形50。如图4所示,波形50 (所接收的数据)不完全匹配波形30 (所发射的数据)。在传送中引入了错误。示出了错误的042,其意味着O被发射但接收器接收了 I。还示出了错误的144,其中I被发射但接收器接收了 O。当数据在I和O之间快速切换时,如波形30中所示,由于在所接收的信号(波形40)中的干扰可能丢失一些过渡,导致所接收的数据(波形50)中的错误(诸如错误42和44)。随着数据连接和数据传送变得更快,由于所接收的信号没有足够的时间从I完全过渡到O或者反之,因此这些类型的错误更常见。可以实施均衡以帮助阻止这些错误。
[0047]在PCI Express Gen3中,均衡包括实现补偿ISI以使得所接收的信号看起来像原始的所发射的信号的设定。可以实施发射和接收均衡两者。在发射均衡中,在发射端处的信号在其被发送之前以对将由信道引入的失真进行补充的方式被“重塑”。换言之,重塑可以抵消失真。重塑可以允许接收端更容易在I和O之间进行辨别。在接收均衡中,在接收端处再修复信号以抵抗由信道引入的失真并进一步改善信号质量。在PCI Express Gen3中,可以实施发射和接收均衡两者。
[0048]图5示出了根据本发明一个实施例的、在传送的接收端处的信号均衡前和均衡后的一个示例。波形60所示的信号没有在其上实施均衡。波形62所示的信号示出了均衡后的信号。I和O之间的过渡由于均衡的原因在波形62中相比在波形60中可以更清楚地看到。
[0049]图6是传送信道的接收端处的、来自示波器探测器的眼图70的常规示图。测量结果#5是眼高(eye height)。眼高提供信道中的噪声或者干扰的测量。随着干扰增加,“眼”呈现为关闭并且眼高尺寸变小。随着干扰减小,眼高尺寸变大。因此可以测量眼高以检查信道上传送的质量。在均衡训练的过程中,可以使用眼图来每个地测试多个参数集以发现最优参数集。如已知的,眼图70中所示的其他尺寸(尺寸1-4和6-9)可以用于导出信道的其他性能指标。
[0050]以下是数个示例均衡算法的描述。这些算法可以用于实施给定时间限制内的均衡。可以对这些算法进行修改和变化,而不脱离本发明的较宽精神和范围。
[0051 ] PCIe中的均衡可以通过发现可用于调谐发射器的最优传送均衡系数来完成。可以指定三个系数(称为前标记(precursor)、后标记(postcursor)和主标记(maincursor)),并且通过以下方程约束系数:
[0052](I) precursor+maincursor+postcursor=FS
[0053](2) FS — 2*(precursor+postcursor)>=LF
[0054](3) precursor<=FS/4
[0055]其中LF=低频率以及FS=完全摆动,对于特定端口两者都是常数。满足这些方程的系数称为“合法的(legal)”以及哪些不满足的称为“不合法的(illegal)”。术语“最优系数”意味着导致等于或者小于10-12的误码率(BER)的系数。典型的计算机系统可以有数百个合法的均衡系数组合。本公开所描述的算法和技术可以用于有效发现合法的系数组合中的最优系数集。
[0056]图7是根据本发明的一个实施例的、均衡系数的映射图的图示。诸如该示例的映射图可以用于形象化系数。映射图上的每个点代表前标记和后标记的组合。因为主标记可以使用以上方程(I)从其他两个系数导出,所以搜索算法仅跟踪前标记和后标记。图7示出在X轴上的后标记(C+1)和在Y轴上的前标记(C-1)。在该示例中,FS值是24并且系数被表达为FS的比例。在映射图上的阴影方格代表预设定并且虚线代表将合法的系数与不合法的系数分开的分界线。
[0057]映射图中的每个点均有与其相关联的眼高,其代表由在该点的系数产生的链路质量。该链路质量的评估可以由诸如决策反馈均衡器或者DFE的状态机来实施。任何合适的均衡器都可以使用,并且在本公开的某些实施例中可以称为EQ Train。最终结果是分数,在公开的某些示范性实施例中称为“qeye”。qeye是眼高的测量,并且值越高代表链路质量也好。搜索算法的目的是为发现映射图上的最大值,或者可替代地为发现满足或者超出预定阈值的值。可以使用质量矩阵而不是眼高,诸如眼宽的测量或者眼面积的测量。
[0058]如上提到的,通常没有足够的时间测试映射图上的每个点。在使用PCIe的一个示例实现方案中,每个点可能用200微秒以上来评估。因此评估250个点将会要求大致50毫秒,但是PCIe规范例如只允许最大24毫秒来发现最优系数。此外,期望尽可能快地完成使得可以实施其他操作。在此描述的搜索算法将为短信道(其中映射图上的许多点是可接受的)和长信道(其中映射图上只有很少的点是可接受的)工作。在此所描述的搜索算法还可以利用qeye值在局部区域中单调增加来实行更有效的搜索。
[0059]在本发明的一个实施例中,在大的系数映射图上实行粗粒度搜索以发现可能有最高qeye的映射图区。一旦完成分析,就可以在映射图的更小部分上实施细粒度搜索以发现最高qeye。实施粗粒度搜索在短时间内提供映射图的概览,并且随后更准确的细粒度搜索可以用于磨练最优系数集。
[0060]可以以各种方式实行粗粒度搜索。图8A和SB示出了粗粒度搜索的一个示范性实施例。如所示的,粗粒度搜索包括四个序列一其每一个使用为2的步长迭代地(iteratively) “行走”映射图。图8A所示的第一序列开始于映射图上的坐标(O,O)处,而第二、第三和第四序列分别开始于(1,I)、(O,I)和(1,0)处。第一系列按以下顺序覆盖映射图上的阴影点:(O,O)、(O,2)、(O,4)、(O,6)、(2,6)、(2,4)、(2,2)、(2,O)、(4,O)、(4,2)、(4,4)、(6,2)、(6,0)、(8,0)。图8B示出了第二序列,其开始于(1,I)处,并且如所示的用为2的步长行走映射图。序列三和四(未示出)也运行。通过将粗粒度搜索分解为四个序列,算法在搜索的早期阶段能够覆盖映射图的广的区域,并且如果时间许可随后覆盖整个映射图。如果在四个序列完成之前粗粒度搜索耗尽了时间,那么直到那个时间点所发现的最佳点被存储并且传递到细粒度搜索。
[0061]可以为粗粒度搜索设置退出条件。在一个示范性实施例中,如果以下任何事件发生则粗粒度搜索算法可以退出:
[0062](I)已经发现超出最小可接受qeye阈值的点;
[0063](2)迭代的数目已经超出预定阈值;
[0064](3)在粗粒度搜索中的总时间已经超出预定值;或者
[0065](4)已经测试了所有所选择的粗粒度序列中的所有指定点。
[0066]一旦退出条件发生,则映射图中的最佳点被用作细粒度搜索的开始点。
[0067]图9是根据本发明一个实施例的、用于实施均衡系数的映射图上粗粒度搜索的另一种技术的示图。在该示范性实施例中,粗粒度搜索将每个轴切分为2、4、8个部分,以将系数映射图分为大致相等的区。然后选择每个区的中心点,并且检查与那些中心点相关联的系数的合法性。确定用于每个合法的点的qeye,并且选择具有最高qeye的点作为“最佳粗点”并作细粒度搜索的开始点。
[0068]在一些实施例中,粗粒度之外的技术可以用来选择细粒度搜索的开始点。例如,软件程序或者过程可以用来指定一个系数集以评估。所指定的系数集可以是之前在系统中用于均衡的系数集。在一些封闭系统诸如便携式计算机中,在每个启动周期期间最优均衡系数可以不变,因此这些系数可以用作细粒度搜索的开始点或者如果与系数相关联的眼高满足可接受的阈值,则甚至可以不进行细粒度搜索而被重新使用。
[0069]图10是根据本发明一个实施例的、用于实施均衡系数映射图上细粒度搜索的技术的示图。上述的粗粒度搜索算法,用来发现将被用作细粒度搜索的开始点的“最佳粗点”。现在描述用于细粒度搜索的一个示例算法。所评估每个系数集被称为算法的“调谐尝试”或者“迭代”。细粒度搜索算法从评估开始点周围的邻近参数开始。然后,算法朝着具有最高眼高的邻近点的方向一次“行走”一个点。与最大眼高相关联的相邻或者邻近点可以称为当前穿过点。朝着该方向(第一方向)继续行走并且评估沿途的每个点,直到眼高开始下降或者直到达到边界线。在眼高在该处开始下降的(或者到达边界的)映射图上的点处,算法评估映射图上八个周围的点(或者在边界线的情况下更少)。算法随后再朝着具有最高眼高的方向(第二方向)行走,并且重复这些行走和探索步骤,直到满足退出条件。四个潜在退出条件是:
[0070](I)八个周围的点都是低的一算法已经到达最大值;
[0071](2)超时
[0072](3)迭代的数目已经到达预定阈值;或者
[0073](4)眼高达到可接受的阈值。[0074]另外,图10提供细粒度搜索的更详细的示例。假设粗粒度搜索选择了点(3,5)作为开始点。图10中的映射图上的数字仅是例示性的,并且用来代表用于与映射图上的每个点相关联的均衡系数的眼高。在开始点(3,5)处的数字是5。算法评估该开始点周围的邻近的系数,并且发现点(4,5)有所有邻近点的最高眼高一为6的眼高。以该方式评估邻近点可以称为“探索模式”。算法随后朝着点(4,5)的方向一次一步地行走,直到眼高开始下降。该方向可以被认为是第一方向,并且点(4,5)可以称为当前穿过点。沿映射图行走可以称为“行走模式”。点(8,5)处的眼高为10,并且点(9,5)处眼高为9。因此算法将围绕眼高开始下降的点即点(8,5)重新居中。算法随后评估映射图上的点(8,5)周围的八个点并且发现具有眼高为12的点(8,6)是具有最高眼高的点。因此算法从点(8,5)朝着点(8,6)的方向行走(即第二方向),并且继续直到眼高开始下降。在点(8,10)处的眼高是19并且在点(8,11)处下降为14。再次,算法重新居中,该次围绕点(8,10)并且评估点(8,10)周围的八个点。该次评估之后,算法发现八个周围的点的眼高都低于点(8,10)处的眼高。因此,算法已经满足退出条件并且选择点(8,10)处的均衡系数在系统中使用。在该示例中总结了细粒度搜索。
[0075]在细粒度搜索期间,可以首先检查算法所遇到的映射图上的每个系数集合法性。如果在探索模式中时遇到不合法的点,那么算法可以跳过该点并且往前走。如果在行走模式中时遇到不合法的点,那么算法可以在该点处停止行走并且切换到探索模式。
[0076]上述粗粒度搜索和细粒度搜索可以以各种方式并且在各种系统中实现。这些技术可以用于例如类似PCIe的高速串行通信协议,以准备数据信号用于传送。PCIe3.0基本规范没有提出均衡搜索算法。
[0077]在涉及PCIe3.0的一个示范性实现方案中,恢复.均衡(Recovery.Equalization)是链路训练和状况状态机(LTSSM)的恢复状态的子状态。该子状态用来发现用于8.0GT/s速度上的合适操作的 最优传送系数。均衡系数可以由硬件使用握手协议来自动确定。因此,恢复.均衡训练算法用来在最短时间内发现最优系数。
[0078]恢复.均衡子状态进一步分为五个子-子状态:
[0079](I)恢复.均衡阶段O
[0080](2)恢复.均衡阶段I
[0081](3)恢复.均衡阶段 2ReqCoeff
[0082](4)恢复.均衡阶段2EQ Train
[0083](5)恢复.均衡阶段3
[0084]恢复.均衡阶段O仅为上游端口预留(即端点(endpoint))。当下游端口(即根端口(ootport))请求进入恢复.均衡时,端点首先进入该状态。在进入该状态之前,根端口将根端口建议均衡系数应用于其发射器(根端口建议预设定由根端口在第一速度变化为gen3之前以genl/gen2速度通信)。根端口建议预设定的原因在于,由于大多数跟踪都在母板上,因此根端口制造商会更好地预测最优预设定会是什么,从而制造商应该指定作为开始的预设定是什么。该制造商规范可以允许搜索算法更快停留在最优点。
[0085]恢复.均衡阶段I用于上游和下游端口两者。两个端口都将根端口建议预设定应用于其发射器。端口还经由训练设定(TSl)彼此通信其FS和LF值,使得每个端口可以将这些值插入以上指定的约束方程。该步骤使得每个端口在其各自的“主”阶段(即用于上游端口的阶段2,用于下游端口的阶段3)只搜索合法的系数。
[0086]在恢复.均衡阶段2ReqC0eff,上游端口(端点)发送请求给下游端口(根端口)以设定其Tx (发射)设定为上游端口认为会是最优的值,并且等待请求被接受或者拒绝。上游端口可以注意只请求合法系数,但是也可以具有处理合法系数被另一侧拒绝的情况的机制。上游端口可以通过指定各个系数(前标记、主标记、后标记)来请求将应用的均衡设定。
[0087]在恢复.均衡阶段2EQ Train,上游端口评估由在恢复.均衡阶段2ReqCoeff中所请求的系数产生的链路质量。该评估可以由均衡器来实施,并且最终的结果是qeye。端口随后记下该值,并且将其与在较早的请求中所见的qeye值进行比较一如果这是目前为止最高的一个,那么端口将所请求的系数存储在临时变量中诸如(best_precursor, best_maincursor, best_postcursor)0
[0088]如果需要试更多系数(以搜索甚至更高的qeye),那么下一个状态是恢复.均衡阶段2ReqC0efT,或者如果最大qeye大于可接受的阈值(或者如果算法没能发现其他值得试的点),那么下一个状态是恢复.均衡阶段3。在该实施例中,可以用于在恢复.均衡阶段2ReqCoeff和恢复.均衡阶段2EQTrain之间迭代的最长时间是24ms。在达到24ms之后,端口过渡到恢复.均衡阶段3。
[0089]在恢复.均衡阶段3,下游端口向上游端口发请求以变化上游端口的Tx设定,并且下游端口试着发现用于上游端口至下游端口方向的链路的最佳qeye。该阶段有32ms的超时。上游端口只是接收请求、将其反映回并且当其是合法的时指示“被接受”(或者当其是不合法的时指示“拒绝“)、以及将合法的应用于其自己的发射器设定。
[0090]由于那些状态只被分配给端点用于实施系数搜索,因此恢复.均衡训练算法只适用于子-子状态恢复.均衡阶段2ReqC0efT和恢复.均衡阶段2EQTrain。所试的每个系数集称为算法的“调谐尝试”或者“迭代”。当满足某些条件时可以发生从恢复.均衡阶段2Request Coeff的过渡。当EQ Train信号变高时,发生从恢复.均衡阶段2EQ Train到恢复.均衡阶段2ReqCoeff的过渡。
[0091]以下描述包括粗的方法和细的方法两者以及其他方法的搜索算法的一个示范性实施例。该示范性实施例可以宽泛地分类为五个子算法:
[0092]( I)请求之前的最佳设定一如果“最佳系数”变量有有效值,那么再请求那些值。如果链路又进入恢复.均衡状态并且用户希望测试由之前的均衡搜索所发现的点,那么该子算法是有用的。
[0093](2) SBIOS预设定请求一请求由根端口在进入gen3之前推荐的预设定。
[0094](3)软件指定系数请求一软件经由寄存器提供可能是最优的系数集
[0095](4)粗粒度算法一以某一步幅(或者步长)搜索系数空间以发现高的qeye值的区;或者如上所述,实施任何类型的粗粒度算法
[0096](5)细粒度算法一在之前的步骤中未覆盖的最高点附近搜索,但是限制步长为I。如上所述,总是朝着具有qeye的增幅最高的梯度的方向行进。
[0097](6)最后的步骤是重新请求在之前5个步骤中发现的最佳点。该步骤是一代贯穿(one-1teration pass through)步骤。
[0098]图11是根据本发明一个实施例的、用于实施多道信道均衡训练的方法步骤的流程图。虽然结合图1、2和7-10描述方法步骤,本领域技术人员将理解以任何顺序实施方法的任何系统均落在本发明范围内。当执行存储在存储器诸如系统存储器104中的软件应用程序时,处理单元102配置为实施方法1100的各种步骤。在一些实施例中,并行处理子系统112可以实施方法1100的一些步骤。
[0099]如所示的,方法1100开始于步骤1110,其中处理单元102对均衡系数集实施第一遍测试。第一遍测试产生每个均满足某一标准的一个或多个经过滤的均衡系数集。第一遍测试可以包括上述粗粒度搜索算法中的一个。第一遍测试可以例如确定与每个均衡系数集相关联的眼高,并且至少部分基于该眼高来过滤均衡系数集。
[0100]在步骤1120,处理单元102对一个或多个经过滤的均衡系数集实施第二遍测试以确定最终的均衡系数集。第二遍测试产生比第一遍测试更准确的结果。第二遍测试可以比第一遍测试用更长的时间来实施。此外,第二遍测试可以包括上述的细粒度搜索算法。第二遍测试可以例如确定与每个均衡系数集相关联的眼高,并且至少部分基于该眼高来选择或者拒接均衡系数集。
[0101]图12是根据本发明一个实施例的、用于实施粗粒度算法的方法步骤的流程图。虽然结合图1、2和7-10描述方法步骤,本领域技术人员将理解以任何顺序实施方法的任何系统均落在本发明范围内。当执行存储在存储器诸如系统存储器104中的软件应用程序时,处理单元102配置为实施方法1200的各种步骤。在一些实施例中,并行处理子系统112可以实施方法1200的一些步骤。
[0102]过程开始于步骤1210。处理器102执行执行软件应用程序以选择均衡系数映射图上的开始点。在图8A所示的一个示例性实施例中,选择的开始点是(O,O)。在其他实施例中可以选择其他点。
[0103]在步骤1220,处理器102执行软件应用程序来使用大于一的步长沿着映射图迭代地行走。在图8A所示的示例性实施例中,步长为2。在其他实施例中可以使用其他步长。在示例性实施例中,如以上针对图8A所述,技术从点(0,0)行走到点(O, 2),然后到点(0,4)、(0,6)、(2,6)等。该方法通过使用大于一的步长可以在短时间内覆盖映射图的广的区域。
[0104]在步骤1230,处理器102执行软件应用程序以测量每个点的眼高。将具有最高眼高的点存储在存储器中,并且也可以存储其他点。可以使用用于测量眼高的任何合适的过程。具有最高眼高的点可以用作最优系数或者可以用作另一个搜索算法诸如细粒度搜索的开始点。
[0105]在步骤1240,如果退出条件发生,处理器102执行软件应用程序以退出方法。可以使用数个潜在的退出条件。如果已经发现超出最小可接受qeye阈值的点,那么第一退出条件发生。如果退出条件发生,那么搜索已经发现最优系数集并且这些系数可以被选择并用于传送。如果反复数目已经超出预定值,那么第二退出条件发生。搜索可以实施预定最大数目的反复,使得不超出用于粗粒度搜索的时间限制。如果达到反复的数目,那么搜索过程可以退出。如果粗粒度搜索的总时间已经超出预定值,那么另一个退出条件可以发生。如果已经测试了在所有经选择的粗粒度序列中所指定的所有点,第四退出条件可以发生。当退出条件发生,处理器102可以执行软件应用程序以选择所发现的最佳均衡系数(如由眼高所测量的),并且或者使用那些系数用于均衡,或者使用那些系数作为细粒度搜索的开始点。
[0106]在步骤1250,如果没有退出条件发生,那么处理器102执行软件应用程序来通过从步骤1210开始重复方法,并且使用不同的开始点。如示例性实施例,过程可以针对第一序列使用开始点(0,0),并且随后针对第二序列使用开始点(0,I)。第二序列正如第一一样继续进行:沿映射图使用大于一的步长行走、测量眼高、并且如果退出条件发生则退出。如果没有满足退出条件,那么可以发生任何数目的附加序列。
[0107]图13是根据本发明一个实施例的、用于实施粗粒度搜索的方法步骤的流程图。虽然结合图1、2和7-10描述方法步骤,本领域技术人员将理解以任何顺序实施方法的任何系统均落在本发明范围内。当执行存储在存储器诸如系统存储器104中的软件应用程序时,处理单元102配置为实施方法1300的各种步骤。在一些实施例中,并行处理子系统112可以实施方法1300的一些步骤。
[0108]过程开始于步骤1310。在该步骤,处理器102执行软件应用程序以将均衡系数的映射图切分为多个区。图9中可见以该方式切分映射图的示例。映射图可以切分为大致相等大小的区或者非相等大小的区。映射图可以切分为任何合适数目的区。
[0109]在步骤1320,处理器102执行软件应用程序以测量每个区中的一个点的眼高。可以以各种方式选择在每个区中测量的点。在一些实施例中,可以选择区的中心点。在另一些实施例中,可以选择随机的或者伪随机的点。使用任何合适的技术来测量眼高。
[0110]在步骤1330,处理器102执行软件应用程序以选择具有最高眼高的点作为细粒度搜索算法或者另一个搜索算法的开始点。理想情况,选择具有最高眼高的点作为开始点与从另一个点开始相比,导致更快发现最优均衡系数集。
[0111]图14是根据本发明一个实施例的、用于实施细粒度搜索的方法步骤的流程图。虽然结合图1、2和7-10描述方法步骤,本领域技术人员将理解以任何顺序实施方法的任何系统均落在本发明范围内。当执行存储在存储器诸如系统存储器104中的软件应用程序时,处理单元102配置为实施方法1400的各种步骤。在一些实施例中,并行处理子系统112可以实施方法1400的一些步骤。
[0112]技术开始于步骤1410。在步骤1410,处理单元102在均衡系数映射图上选择开始点。在一个示范性实施例中,均衡系数映射图可以类似于图7所示的映射图。可以由任何适合的技术选择开始点,包括粗粒度搜索算法中的一个或者上述的子算法中的一个。
[0113]在步骤1420,处理单元102执行软件应用程序以测量开始点和与开始点相邻的每个点的眼高。这些眼高随后可以用来在映射图上搜索最优均衡系数集。可以使用任何适合的方法来测量眼高。
[0114]在步骤1430,处理器102执行软件应用程序,以沿均衡系数的映射图朝着具有最高眼高的、与开始点相邻的点的方向行走。以上针对图10描述了该过程。
[0115]在步骤1440,处理器102执行软件应用程序以确定眼高是否仍然在增大或者没有增大。如果眼高仍然在增大,那么方法返回步骤1430并且继续朝着有最高眼高的点的方向行走。只要眼高在增大(或者如下所述直到某一退出条件发生),重复步骤1430和1440。如果眼高没有增大,那么方法进行到步骤1450。
[0116]在步骤1450,处理器102执行软件应用程序以选择从该处眼高开始下降的点,并且测量每个相邻点的眼高。以上还针对图7描述了该过程。这些眼高用于确定行走的新的方向,或者确定是否满足退出条件。随后过程继续到步骤1460。
[0117]在步骤1460,处理器102执行软件应用程序以确定是否已经满足退出条件。如以上针对图10所述,可以使用数个潜在的退出条件。如果每个相邻点与眼高开是下降的点相比都具有更低的眼高,那么方法发现本地最大值,并且在某些实施例中这可以结束细粒度搜索算法。是否已经满足预定时间阈值可以是另一个退出条件。第三退出条件可以是眼高是否在大于预定阈值。如果是,那么该眼高满足系统要求并且那些系数可以由处理器102选择来使用。当算法的反复数目已经到达某一阈值时,满足第四退出条件。如果不满足退出条件,那么方法返回步骤1430朝着具有最高眼高的方向继续行走。如果已经满足退出条件,那么方法继续到步骤1470。
[0118]在步骤1470,处理器102执行软件应用程序以选择在已经分析的所有系数集中具有最高眼高的系数。已经满足以上在步骤1460中所述的至少一个退出条件,并且系统现在可以继续其他启动过程。理想情况是,所选择的均衡系数将减小所传送的信号中的错误率。
[0119]总而言之,可以使用两道(遍)式方法来发现和选择最优均衡系数集用于高速数据传送。第一遍包括在包括每个点处的均衡系数集的点的映射图上的粗粒度搜索。粗粒度搜索的目的是选定可以用于高速数据传送或可以用作第二遍的开始点的均衡系数集。可以以各种方式实施粗粒度搜索,包括将系数映射图分为数个区并测试每个区中的一个点或者围绕映射图迭代地行走并测试映射图上的点的子集。所实施的测试包括测量与每个均衡系数集相关联的眼高。第二遍包括映射图上的细粒度搜索。细粒度搜索涉及测量开始点的眼高和与开始点相邻的每个点的眼高。搜索算法然后沿映射图朝着具有最高眼高的点的方向行走,并且只要眼高保持增加就继续行走。如果眼高开始下降,那么算法将在具有最高眼高的点处重新居中,并评估所有相邻的点。算法随后再朝着具有最高眼高的点的方向行走并继续细粒度搜索直到满足退出条件。一旦满足退出条件,算法就选择具有最高眼高的均衡系数并将那些系数用于均衡沿高速数据连接的传送。
[0120]有利地,使用以上技术选择均衡系数允许更快地选择满足系统所要求的质量标准的系数。在诸如服务器的一些系统中,信道长并且噪声非常大。可接受的系数子集因此非常少。上述的搜索算法通过首先识别最优系数可能位于的均衡系数映射图的区,并随后通过实施该区的贯穿搜索来发现最佳系数,以有效发现最优系数。在短信道系统中(诸如台式电脑),大量点可以满足操作要求。本文所述的算法可以快速进行粗粒度搜索并随后使用细粒度搜索来定位映射图上的最优点。细粒度搜索可以朝着八个可能的方向中的任何一个行走,并且这有助于快速发现最优点。此外,诸如便携式计算机的一些系统具有不可变的嵌入式链路,这意味着均衡系数也不期望改变。本公开提供直接指派已知质量的均衡系数作为搜索的开始点的软件。在质量点处或者质量点附近开始的搜索通常可以非常快地完成。
[0121]其他优点包括能够通过改变步大小、退出条件或者其他变量来微调上述搜索算法。上述算法可以处理合法点和不合法点。可以调整拨给粗粒度搜索和/或细粒度搜索的时间。
[0122]本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的光盘只读存储器(CD-ROM)盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息jP(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0123]以上已参照特定实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和变化而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
【权利要求】
1.一种用于分析用于高速数据总线的均衡系数的计算机实现方法,所述方法包括: 对多个均衡系数集实施第一遍测试以过滤所述多个均衡系数集,来产生一个或多个经过滤的均衡系数集,其中每个经过滤的均衡系数集满足第一预定阈值; 对所述一个或多个经过滤的均衡系数集实施第二遍测试以确定满足第二预定阈值的最终的均衡系数集,其中所述第二遍测试相比所述第一遍测试产生更准确的结果。
2.根据权利要求1所述的方法,其中所述多个均衡系数集分布在包括多个点的均衡系数的映射图上,其中所述映射图上的每个点代表单个均衡系数集。
3.根据权利要求2所述的方法,其中实施所述第一遍测试包括将所述均衡系数的映射图切分为多个区,并且测试每个区中所选择的均衡系数集以确定所述所选择的均衡系数集是否满足所述第一预定阈值。
4.根据权利要求3所述的方法,其中测试所述所选择的均衡系数集包括,对与采用所述所选择的均衡系数调谐的数据传送相关联的眼高进行测量。
5.根据权利要求2所述的方法,其中实施所述第一遍测试包括沿所述均衡系数的映射图迭代地行走到至少一个新的点,并且测试由所述至少一个新的点所代表的均衡系数集。
6.根据权利要求5所述的方法,其中所述第一遍测试继续,直到满足退出条件。
7.根据权利要求6所述的方法,其中所述退出条件包括: 在每个被访问的点处测量与所述均衡系数集相关联的眼高,并且如果所述眼高高于预定阈值则退出; 沿所述均衡系数的映射图上的所述点迭代地行走,直到已经访问预定数目的点; 超出用于所述第一遍测试的预定时间限制;或者 完成沿所述均衡系数的映射图迭代地行走的一个或多个预定序列。
8.根据权利要求2所述的方法,其中实施所述第二遍测试包括,沿所述均衡系数的映射图上的所述点,从代表所述一个或多个经过滤的均衡系数集中的一个均衡系数集的点,行走到至少一个新的点,并且对由所述至少一个新的点代表的均衡系数集进行测试。
9.根据权利要求8所述的方法,其中测试所述均衡系数集包括,对与采用所述所选择的均衡系数集调谐的数据传送相关联的眼高进行测量。
10.一种计算设备,包括: 处理器;以及 耦连到所述处理器并包括软件应用的存储器,当所述软件应用由所述处理器执行时,使得所述处理器: 对多个均衡系数集实施第一遍测试以过滤所述多个均衡系数集,来产生一个或多个经过滤的均衡系数集,其中每个经过滤的均衡系数集满足第一预定阈值; 对所述一个或多个经过滤的均衡系数集实施第二遍测试以确定满足第二预定阈值的最终的均衡系数集,其中所述第二遍测试相比所述第一遍测试产生更准确的结果。
【文档编号】G06F11/00GK103885911SQ201310714797
【公开日】2014年6月25日 申请日期:2013年12月20日 优先权日:2012年12月20日
【发明者】车兴世, 黄伟哲, 维沙·梅塔, 费罗兹·卡里姆, 马康栋, 麦克尔·霍普古德, 斯里坎斯·德瓦拉帕里 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1