分层/无损的分组抢先以减少流控制的基于分组的网络中的等待时间抖动的制作方法_5

文档序号:9602819阅读:来源:国知局
,诸如1、2等等。在一个实施例中,该阈值是2,使 得在一个定时器周期内的一个通道上的2个连续错误导致该通道BER阈值检测进行。作为 响应,在一个实施例中,该逻辑继续至退出框2270,其中重新初始化该链路,并且去除被检 测为坏的该通道。作为结果,链路的活动通道的数量可减少一个通道,诸如四通道链路被降 级为三个活动通道。
[0160] 如果按照通道的连续错误计数未达到阈值,则对决策框2268的回答是否,且该逻 辑继续至框2204以接收下一LTP,并且接收机工作在其正常接收状态下,且发射机仍然工 作在重放模式下。
[0161] 如上所讨论,在一个实施例中,使用定时器方案来检测按照通道的连续错误的频 率。根据以上描述,响应于检测到连续的多个坏LTP,该逻辑继续至框2231,并且如图22e 的流程图2200e所示,发起用于实现定时器方案的一组并行操作。在框2272,如果适用,则 启动(第一次)或重新启动(重置)定时器。如决策框2274和循环至自身所描绘,周期性 地检查定时器以确定它是否已过期,或者可选地,可将定时器逻辑配置成产生中断或其它 指标以指示它已过期。如框2276中所描绘,在定时器过期时,将按照通道的坏的连续错误 计时器递减。在一个实施例中,最小的坏错误计数是0,因此对于已经是0的通道错误计数, 其计数不再被递减。
[0162] 并行过程的组合以如下方式检测各个通道上的错误已经超过频率阈值(例如,标 识呈现紧密间距的错误的通道)。每当流程图操作导致该逻辑流过框2258、2260并且决策 框2264的结果是"是"时,坏通道的连续错误计数器将被递增。同时,考虑并行定时器操 作,每当定时器过期而未被重启时,表明该定时器的时间周期已经过去且没有按照通道的 错误,因此将每个通道的按照通道连续错误计数减一(至最小值零)。在一个实施例中,出 现"两连击(twostrikes)"使得该通道出局,这对应于在该时间周期内具有两个连续错误 的通道。
[0163] 除了单个计时器之外,可与不同的时间周期和不同的关联计数阈值并行地使用多 个计时器。例如,这将使得能够观察到按照通道的操作的更长期视图,同时也便于更短的按 照通道的BER阈值检测。还可改变该时间周期中要求的连续错误的数量的阈值。
[0164] 在流程图2200a_e中描绘的实施例下,链路的重新初始化和坏通道的去除源自检 测到呈现紧密间距的错误的通道。
[0165] 然而,这不意味着限制,因为可关于其它状况下链路的重新初始化和/或重新训 练而去除通道,比如在通过退出块2232退出随后检测到顺序的LTPCRC错误时。例如,当 链路被重新初始化时,检查多个按照通道错误计数器以查明错误计数是否已经超过某些阈 值。如果已经超过阈值,则该通道被标记为坏,并且在链路返回至活动操作时不活动。
[0166] 利用隐含的ACK的可靠的LTP传输的另一方面是用于确保在无错误地接收到隐含 的确认之前不覆写重放缓冲器中的LTP的机制。在一个实施例中,通过使用重试请求和往 返标记来方便上述目的。如上所讨论,在一些实施例中,重放缓冲器具有固定的尺寸,或可 被配置成利用多个固定的尺寸之一来操作。此外,一对链路对等方可采用不同尺寸的重放 缓冲器。
[0167] 在使用固定尺寸的重放缓冲器下,重放缓冲器的尺寸将一般被确定为保持多个 LTP,这多个LTP的数量大于可在该链路的往返横越期间传送的LTP的数量,且还有用于各 种处理等待时间的附加考虑。这是图18a和18b中示出的情况,其中重放缓冲器具有8个 槽,并且可同时在该链路上和相反方向的链路路径上横越往返的LTP的数量大约是6或7 个LTP。作为结果,如果在接收机处检测到错误,则在重放缓冲器中的坏LTP的副本被覆写 之前,发射机将接收重试请求。
[0168] 然而,出于实际原因,固定尺寸的重放缓冲器的尺寸未被设定成处理所有可能的 链路长度。链路的长度越长,在接收重试请求之前可从重放缓冲器发出的LTP的数量越大。 在某种情况下,链路长度将使得单独使用重试请求方案将无法确保在接收对于坏LTP的重 试请求之前在重放缓冲器中的该坏LTP的副本不被覆写。
[0169] 这是往返标记适用的情况。返回流程图2200c的决策框2244,确定在不接收往返 标记的情况下是否所有LTP的重放已经完成。在图18c中所示的配置下,重放缓冲器1806 中同样存在8个FIFO槽,但链路长度使得5个LTP可以同一时刻"在线上",意味着至少10 个LTP可以在往返传输和/或在接收器处被处理。作为结果,在接收对于任一LTP的重试 请求之前,可重传重放缓冲器中的所有LTP副本,从而导致可能坏的LTP的副本被覆写。这 会防止坏的LTP被重传,使重放缓冲器的目的无效。
[0170] 为了容许该情形,发射机包括用于在接收往返标记之前检测是否已到达重放LTP 的末端的逻辑,如决策框2244中所示。本质上,这确定重放缓冲器的深度是小于还是大于 往返持续时间。通过环绕回到第一重放LTP的开始(FIFO槽)的重放指针来检测到达重返 LTP的末端。
[0171] 在图18c中,第一重放LTP槽是槽4,且槽4、5、6、7、0、1、2和3中的LTP已被顺序地 重传,从而在接收一对往返标记1822a和1822b中的第一往返标记之前,使重放LTP指针返 回至槽4。这示出了其中在接收往返标记之前到达重放LTP的末端的示例,表明往返持续时 间大于重放缓冲器的深度。这导致对决策框2244的回答是"是",并且逻辑继续至框2245a, 其中发射机的空计数器(NullC〇unt)n被重置为整数k。如框2246a和决策框2248(决策 框2248的否结果循环回到框2246a)所描绘,发射机然后继续以向接收机发送一个或多个 空LTP,直到接收到往返标记或重试请求。此外,对于每个传输的空LTP,将空计数η递增1。 如上所讨论,空LTP不是可靠的LTP,因此不将所传输的LTP的副本添加至重放缓冲器。作 为结果,将确保导致重试请求的坏LTP的副本在接收重试请求之前不被覆写。
[0172] -旦在决策框2248a确定接收到往返标记,则该逻辑就继续至框2250,其中 将发射机返回至正常发送模式一一也如同返回至图23a的发射机状态机2300中的 LinkTransferActive.normal所描述,同时对于通过重放缓冲器的每个循环使用空计数η 值以确定在到达重放缓冲器的末端时要发送多少空LTP。例如,比如说空计数η到达4。作 为结果,每当重放缓冲器FIFO槽到达槽7,发射机将发出4个空LTP。在一个实施例下,重 试请求和往返标记具有最高的优先级并且永不被抢先,因此使用传输由空计数定义的多个 空LTP将确保坏LTP的副本在接收对于该坏LTP的重试请求之前将不会被覆写。作为选项, 可在框2245中将空计数η重置至值k>0以提供安全边际,使得将在通过重放缓冲器的每个 循环的末尾处传输k个额外的空LTP。空计数方案的固有优势是它可被实现以支持基本任 何长度的链路(认识到物理链路的长度存在实际限制,并且具有超过该限制的长度的链路 的制造和/或实现是不可能或不现实的)。
[0173] 返回至决策框2224,如果在到达第一FIFO槽之前已经接收了往返标记,则对决策 框2244的回答是否,并且逻辑继续至框2245b,在框2245b总,将空计数η重置为整数m。如 框2246b和决策框2249 (决策框2249的否结果循环回到框2246b)所描绘,发射机然后继 续向接收机重放LTP直到缓冲器指针已经环绕和返回至其起始槽或空计数η已经到达零, 其中空计数倒计数以m开始并且对于每个重传的可靠的LTP被递减1。响应于决策框2249 的是结果,该逻辑退出其空计数倒计数循环并继续至框2250。对于其中缓冲器深度大于往 返持续时间但在往返持续时间的m个LTP传送循环之内的配置,使用空计数倒计数导致大 约m个LTP传送循环的安全边际。例如,假定缓冲器深度是32个槽并且往返持续时间等于 30个LTP传送循环,且m= 5。在该情况下,当该逻辑退出倒计数循环时,m将是3。这意味 着每当重放缓冲器环绕回到其开始(槽0)时,将在覆写槽0中的LTP之前传输3个额外的 空LTP。由于缓冲器深度是32个槽,所以被覆写的重放缓冲器槽之间的LTP循环的数量是 35,或比往返持续时间大5。
[0174] 响应于检测到坏的通道,可在降级状态下以减少数量的活动通道来操作链路。此 外,该链路降级状态可级联,使得链路可按顺序操作,诸如以四个活动通道开始,检测第一 个坏通道并去除该坏通道,从而导致利用三个活动通道的链路操作,检测第二坏通道并去 除该第二坏通道,从而导致利用两个活动通道的链路操作。该级联可继续检测第三坏通道, 从而导致在单个余下的好通道上的链路操作。还应注意,链路可在不对称配置下操作,使得 一个传输方向可使用与另一传输方向不同数量的活动通道。
[0175] 图26描绘了根据一个实施例的用于利用三个活动通道来操作链路的XFR组。在 该实例中,存在三个XFR组GO、G1和G2,并且相应的CRC是CRC-GO、CRC-G1、以及CRC-G2。 由于该LTP序列仅具有三个状态,其中XFR模式被重复而没有通道改变,所以在相同的相应 通道上传输相同的XFR组。作为结果,可按照通道进行按照通道的CRC比较,或者按照每个 XFR组不考虑LTP序列状态。在3个通道下,对于每个通道存在11个32位传送,从而导致 在每个通道上每个标准检测LTP传输352个位。在一个实施例中,当在三个活动通道下操 作时,使用16位按照通道的CRC。
[0176] 图27描绘根据一个实施例的用于利用两个活动通道来操作链路的XFR组。由于 每个LTP存在33个32位传送,所以在LTP传输流的通道0和1的每一个上传送的位的数 量将在512位和544位之间交替。作为结果,使用两个LTP序列状态来实现按XFR组的按 照通道CRC比较方案。此外,在一个实施例中使用16位按照通道的CRC。
[0177] 图28描绘了根据一个实施例的用于利用单个活动通道来操作链路的XFR组。由于 仅有单个通道,在该单个通道上发送LTP数据,所以它是可能出错的唯一通道。作为结果, 不需要执行按照通道的CRC比较。
[0178] 然而,在其中具有超过单个通道的链路被降级至在单个通道下操作的通道降级情 形下,仍可对于单个通道计算按照通道的CRC计算,因为这可在硬件中以常见的执行方式 来实现。在该实例中,按照通道的CRC计算被简单地忽略。
[0179] 如上所讨论,在本申请中公开的实施例中,链路支持可靠的数据传输,无需使用明 确的ACK。虽然LTP在链路上传输时不会丢失(不考虑诸如电缆被割断的事件),但它会包 含错误。回想起隐含确认方案是通过在一时间段内在发射机处没有接收到重试请求来实 现的,该时间段至少与完成从发射机到接收机并回到发射机的往返所花费的时间一样长。 由于重试请求在与被发送数据不同的通道集合上发送,所以有可能单个重试请求具有错误 (通过CRC校验来标识),从而被抛弃。作为结果,接收侧链路接口可能尝试通知发射侧链路 接口它接收到出错的LTP,但该通知(由重试请求指示)将被抛弃。这是发送RetryReqLTP 的连续对和其它空LTP(例如RetryMrkrO,RetryMrkrl)的对有助于便于隐含ACK方案的情 况。
[0180] 首先,由于这些是空LTP,它们可能不存储在重放缓冲器中,从而不可用于重传。然 而,通过发送空LTP的连续对,确保两个事件之一将导致:1)至少一个或两个空LTP的无错 误的成功接收;或2)如果两个LTP具有错误,这将被检测为连续LTP错误,从而触发对该链 路的重新训练。在(重新)训练期间,通过链路合作方的发射机一接收机对来执行训练序 列,从而在将该链路返回至活动操作之前验证该链路在两个方向上的正确操作。当重新训 练完成时,发送侧在发送重试标记之后并在开始发送新(或继续重放)LTP之前,等待(同 时发送空的LTP)来自接收侧的有保证的重试请求。发送一对这些空分组的另一益处是提 高LTP中的至少一个将是良好的可能性。
[0181] 图29示出了具有示例性配置的节点2900,该示例性配置包括主机结构接口 2902, 该主机结构接口包括耦合至处理器2906的结构端口 2904,该处理器又耦合至存储器2908。 如图1中所示,系统节点可能具有各种配置,诸如但不限于分立的单节点平台106、虚拟化 平台110、多节点平台116和集成单节点平台120所示出的哪些配置。一般而言,每个节点 配置将包括至少一个处理器、存储器以及具有图29中所示的相似部件的至少一个HFI。
[0182] 结构端口 2904包括具有与图18a_18c中所示配置相似的配置的发送端口 1800 和接收端口 1802,以及图29中示出和未示出的其它电路和逻辑,如下文所讨论。发送端口 1800包括:Tx链路结构子层电路和逻辑2910,包括划分成多个发送VL缓冲器的发送缓冲 器(Tbuf) ;Τχ链路传送子层电路和逻辑2912;ΤχΡΗΥ电路和逻辑2914,包括四个发射机 2916 ;以及Tx链路控制块1804。接收端口 1802包括:Rx链路结构子层电路和逻辑2918, 包括划分成多个接收VL缓冲器的接收缓冲器(Rbuf) ;Rx链路传送子层电路和逻辑2920; RxPHY电路和逻辑2922,包括四个接收机2924 ;以及Rx链路控制块1805。
[0183]Tx链路结构子层电路和逻辑2910被配置成实现本申请中描述的链路结构子层操 作的发送侧方面。除了图29中示出的发送缓冲器和发送VL缓冲器,未示出的用于便于这 些操作的部件和块包括结构分组构建块,该结构分组构建块包括L4封装子块、仲裁逻辑和 信用管理器,该L4封装子块被配置成执行对以太网、无限带宽和原生架构分组的L4封装。 此外,在链路结构子层上实现用于便于QoS操作的逻辑的部分(也未示出)。
[0184]Tx链路传送子层电路和逻辑2912被配置成实现本申请中描述的链路传送子层操 作的发送侧方面。这些方面包括用于捆包LTP、准备LTP流以换手至TxPHY、以及支持响应 于RetryReq的LTP重放的各种部件和逻辑块,包括重试逻辑、LTP捆包块、重放缓冲器以及 NxtWrLTP和NxtTxLTP指针(均未示出)。此外,对于Tx链路传送子层实现Tx链路控制块 1804的部分和QoS功能。
[0185] 以简化的形式示出TxPHY电路和逻辑2914,包括四个发射机2916和Tx链路控制 块1804的部分。一般地,发射机2916可包括电气或光学发射机,这取决于该链路的ΡΗΥ层 配置。联网领域的普通技术人员将理解,TxΡΗΥ电路和逻辑块将包括附加的电路和逻辑, 用于实现为了清楚起见而未示出的发送侧PHY层操作。这包括PHY层内的各种子层,这些 子层用于便于结合高速互连来实现的各种特征以减少错误并增强传输特性。
[0186]Rx链路结构子层电路和逻辑2918被配置成实现本申请中描述的链路结构子层操 作的接收侧方面。除了所示出的接收缓冲器和接收VL缓冲器,用于便于这些操作的未示出 的部件和块包括结构分组重新组装块(包括L4分组解封装子块)、信用返回块以及QoS接 收侧逻辑的部分。
[0187]Rx链路传送子层电路和逻辑2920被配置成实现本申请中描述的链路传送子层操 作的接收侧方面。这些包括用于分拆LTP、检测LTPCRC和按照通道的CRC错误、接收机抛 弃模式和相关联的操作、以及QoS操作的各种部件和逻辑块,诸如图18a-18c示出和以上讨 论的各种部件和逻辑块。
[0188] 以简化的形式示出RxPHY电路和逻辑2922,包括四个接收机2924和Rx链路控制 块1805的部分。一般而言,取决于链路的PHY层配置,接收机2924可包括电气或光学发射 机,并且将被配置成在该链路上接收来自发射机2916的信号。联网领域的普通技术人员将 理解,RxPHY电路和逻辑块将包括附加的电路和逻辑,用于实现为了清楚起见而未示出的 接收侧PHY层操作。这包括PHY层内的各种子层,这些子层用于便于结合高速互连来实现 的各种特征以减少错误并增强传输特性。
[0189]HFI2902进一步包括耦合至PCIe(外围部件高速互连)接口(I/F)2930的发送引 擎2926和接收引擎2928。发送引擎2926包括发送缓冲器2932,其中缓冲了L4分组(例 如以太网分组,包括封装TCP/IP分组、无限带宽分组)和/或结构分组。在一个实施例中, 用于发送缓冲器2932的存储器的全部或部分包括存储器映射的输入/输出(ΜΜΙ0)地址空 间,也称为编程I〇(PI〇)空间。ΜΜΙ0使处理器2906能够经由例如直接存储器访问执行对发 送缓冲器2932的直接写入(DMA写入)。
[0190] 接收引擎2928包括接收缓冲器2934和DMA引擎2936。接收缓冲器用于缓冲接收 端口 1802的输出,接收端口 1802可包括结构分组和/或L4分组。DMA引擎2936被配置成 执行DMA写入以将来自接收缓冲器2934的分组数据复制到存储器2908和/或处理器2906 中的多个存储器高速缓存级之一。例如,在一些实施例中,以DMA方式将分组首部数据写入 高速缓存,同时以DMA方式将分组有效载荷数据写入存储器。
[0191] 处理器2906包括CPU2938,该CPU包括多个处理器核2940,每个处理器核包括集 成的1级和2级(L1/L2)高速缓存并耦合至一致性互连2942。耦合至存储器2908的存储 器接口 2944、集成输入/输出块(110)2946以及末级高速缓存(LLC) 2948也耦合至一致性 互连2942。110 2946在由处理器核、存储器和高速缓存所采用的一致性域与用于10组件和 10接口(包括一对PCIe根复合体(RC) 2950和2952)的非一致性域之间提供接口。如本领 域公知,PCIeRC位于PCIe互连层级的顶部,多个PCIe接口和PCIe设备可耦合至PCIeRC, 如PCIe接口 2954、2956、2958 和 2960 所示。如所示,PCIe2956 耦合至HFI2902 的PCIe 接口 2930。
[0192] 在诸如图29中所示的一些实施例中,处理器2912采用SoC架构。在其它实施例 中,将PCIe相关的组件集成在耦合至处理器的10芯片组或类似物中。在其它实施例中,处 理器2912和一个或多个HFI2902被集成在SoC上,诸如SoC2962的虚线轮廓所描绘。如 进一步在图29中示出,软件应用2964和结构vNIC2966包括在一个或多个处理器核2940 上运行的软件组件或由运行在处理器2906上的操作系统主控的一个或多个虚拟机。除了 这些软件组件之外,存在实现在存储器2908中的附加的软件组件和缓冲器,以便于存储器 2908 (包括适用的多个高速缓存级)与发送引擎2926和接收引擎2934之间的数据传送。
[0193] -般而言,在本申请的附图中描绘的电路、逻辑和部件还可在各种类型的集成电 路(例如半导体芯片)和模块中实现,包括分立的芯片、SoC、多芯片模块以及包括对多个网 络接口的支持的联网/链路接口芯片。此外,如本申请中使用,用于实现各种操作的电路和 逻辑可通过嵌入式逻辑、嵌入式处理器、控制器、微引擎来实现,或以其它方式使用硬件、软 件和/或固件的任何组合来实现。例如,通过各种逻辑块和/或电路描绘的操作可使用编 程逻辑门及类似物(包括但不限于ASIC、FPGA、IP块库)来实现,或通过在包括处理器、处 理器核、控制器、微控制器、微引擎等等一个或多个处理元件上执行的一个或多个软件或固 件指令来实现。
[0194]另外,本说明
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1