首页> 中国专利> 用于减小数据损坏概率的通道错误检测和通道去除机制

用于减小数据损坏概率的通道错误检测和通道去除机制

摘要

用于在多通道链路中检测通道错误并去除错误通道的方法、装置和系统。包括链路分组的数据被划分为多个位流,并且在多通道链路的相应通道上并行地传输。位流数据在接收机端口的多个接收通道处被接收且经处理,以便重新组装链路分组并对在每一个通道上接收到的数据计算CRC。链路分组包括经传输的CRC,所述经传输的CRC与接收到的CRC比较以检测链路分组错误。当检测到链路分组错误之后,存储每通道的或每传送组的CRC值,并且发布重传坏分组的重试请求。结合接受到重传的分组,对接收到的数据重新计算每通道或每传送组的CRC值,并且将这些CRC值与所存储的每通道的或每传送组的CRC值比较以检测导致链路分组错误的通道。

著录项

  • 公开/公告号CN105706388A

    专利类型发明专利

  • 公开/公告日2016-06-22

    原文格式PDF

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

    申请/专利号CN201480061083.3

  • 发明设计人 M·S·比利特拉;

    申请日2014-12-05

  • 分类号H04L1/00(20060101);H04L1/20(20060101);H04L29/10(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人黄嵩泉

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 15:41:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-01

    授权

    授权

  • 2016-07-20

    实质审查的生效 IPC(主分类):H04L1/00 申请日:20141205

    实质审查的生效

  • 2016-06-22

    公开

    公开

说明书

背景技术

近年来,对高性能计算(HPC)的使用和兴趣已出现大幅增长。过去,HPC通常与所谓的“超级计算机”相关联。超级计算机在20世纪60年代被引入,最初以及几十年来主要由SeymourCray在以SeymourCray的名字或首字母缩写命名的控制数据公司(CDC)、Cray研究所以及随后的多个公司制造。虽然20世纪70年代的超级计算机仅使用几个处理器,但在20世纪90年代,具有数千个处理器的机器开始出现,并且近来已经实现具有数十万个“现成”的处理器的大规模并行超级计算机。

存在许多类型的HPC架构,这些HPC架构以不同级别的规模和性能来实现并进行研究导向。然而,共同的思路在于,诸如处理器和/或处理器核之类的大量计算单元的互连来以并行的方式协作地执行任务。根据近来的芯片上系统(SoC)设计和提案,使用二维(2D)阵列、三维环(torus)、环或其他配置在单个SoC上实现大量的处理器核等。此外,研究人员已经提出了3DSoC,在3DsoC下,100个或甚至1000个处理器核以3D阵列互连。在多个服务器板上的多个分开的多核处理器和SoC也可以紧密地间隔,多个服务器板又经由背板等通信地互连。另一常见方法是互连在通常以2D阵列配置的服务器的机架(例如,刀片式服务器和模块)中的多个互连计算单元。IBMSequoia(红杉)(宣称是世界上最快的超级计算机)包括总计1572864个核的服务器刀片/模块的96个机架的2D阵列,并且当在峰值性能下操作时消耗巨额的7.9兆瓦。

HPC的性能瓶颈之一是由在计算节点之间的多个互连上传送数据引起的等待时间(latency)。典型地,这些互连以互连层次结构来构造,处理器/SoC内的最高速且最短的互连在此层次结构的顶部,而等待时间随着沿层次结构级别向下而增加。例如,在处理器/SoC级别之后,互连层次结构可包括处理器间的互连级别、板间的互连级别、以及将单独的服务器或单独服务器的聚合与其他机架中的服务器/聚合连接的一个或多个附加的级别。

互连层次结构的一个或多个级别采用不同的协议是常见的。例如,SoC内的多个互连典型地是专有的,而层次结构中的较低级别可采用专有或标准化的多个互连。不同的互连级别还将典型地实现不同的物理(PHY)层。作为结果,在多个互连级别之间采用某种类型的互连桥接是必要的。此外,当实现异构计算环境时,给定的互连级别内的桥接可能是必须的。

在互连层次结构的较低级别处,使用诸如以太网(在各种IEEE802.3标准中定义)和无限带宽(InfiniBand)之类的标准化互连。在PHY层,这些标准中的每一种都支持有线连接(诸如,缆线和在背板上)以及光链路。以太网在OSI7层模型中的链路层(层2)上实现,并且从根本上被视为链路层协议。无限带宽(InfiniBand)标准定义了用于覆盖OSI层1-4的无限带宽的各个OSI层方面。

当前的以太网协议不具有用于支持以太网链路上的可靠数据传输的任何固有设施。这与无限带宽(InfiniBand)的链路层实现类似。在更高层(诸如,TCP/IP)上,每个地址传输是可靠的。在TCP下,经由响应于从(IP源地址处的)发送方接收到IP分组而从(IP目的地地址处的)接收方返回至此发送方的显式确收(ACK)来实现可靠数据递送。由于分组在沿发送方与接收方之间的路径的多个节点中的一个节点处可能丢失(或者如果接收方具有的缓冲器空间不足,则甚至有可能在接收方处丢失),因此使用显式ACK来确认每一个分组的成功递送(注意,单个ACK响应可确认多个IP分组的递送)。传输-确收(ACK)方案需要在源和目的地设备中的每一个设备处维持大量的缓冲器空间(在需要重传丢失的一个或多个分组的情况下),并且还给网络栈添加了附加的处理和复杂性。例如,由于ACK有可能丢失,因此发送方还采用定时器,此定时器用于触发对在此定时器的超时时段之内未接收到ACK针对的分组的重传。每一个ACK都消耗珍贵的链路带宽并且产生附加的处理开销。此外,使用定时器对链路往返延迟设置了上限。

附图说明

通过参考与附图一起进行的下面的详细描述,本发明的前述的方面和许多伴随的优点,将变得更加轻松地被理解,其中,在各个视图中,相同参考编号表示相同部件,除非另作说明:

图1是示出根据一个实施例的包括结构(fabric)架构的各种部件和互连的系统的高级视图的示意图;

图2是描绘根据一个实施例的用于在结构链路上传送数据的该架构的多个层的示意图;

图3是示出被集合在捆包(bundle)中的多个微片(flit)的示意图;

图4是示出根据一个实施例的结构分组(packet)的结构的示意图;

图5是示出根据一个实施例的标准检测LTP的数据结构的示图;

图6是示出根据一个实施例的14位CRCLTP的数据结构的示图;

图7是示出根据一个实施例的增强型检测LTP的数据结构的示图;

图8是示出根据一个实施例的标准检测空LTP的数据结构的示图;

图9a是示出根据一个实施例的用于4通道链路的传输方案的实施例的示图,在此传输方案下,每次在链路结构与链路传送子层之间的接口处并行地处理两个用于标准检测LTP的微片;

图9b是示出根据一个实施例的用于4通道链路的传输方案的实施例的示图,在此传输方案下,每次在链路结构与链路传送子层之间的接口处并行地处理两个用于增强型检测LTP的微片;

图10是示出根据一个实施例的在4通道链路上传输具有两个控制位的14位CRCLTP的示意图,其中每次在链路结构与链路传送子层之间的接口处并行地处理两个微片;

图11是示出根据一个实施例的在8通道数据路径上并行地传输具有两个控制位的两个14位CRCLTP的示意图,此8通道数据路径包括结合在一起的两个4通道链路;

图12是示出根据一个实施例的在采用4通道的两个链路端口之间的双向数据传输的示例的示意图;

图13是示出交织来自在分开的虚拟通道上发送的两个FP的多个结构分组微片的实施例的示例的示图;

图14是示出根据一个实施例的使用进栈(Push)和出栈(Pop)交织的示图;

图15是示出根据一个实施例的、使用进栈和出栈交织以及VL标记交织的组合的示图;

图16是示出根据一个实施例的、来自缓存在三个分开的VLFIFO中的三个结构分组的多个微片的抢占式交织的示例的组合示意图和时间流图,三个分开的VLFIFO对应于具有单独优先级等级的VL;

图17是示出根据一个实施例的、来自缓存在三个分开的VLFIFO中的三个结构分组的多个微片的冒泡式交织和抢占式交织的示例的组合示意图和时间流图,其中两个VL共享优先级等级,而另一个VL具有更高的优先级等级;

图18a和18b是示出传输LTP传输方案和使用每通道(per-lane)的CRC和LTPCRC来检测LTP通道和错误通道的示意图,其中

图18a描绘了根据一个实施例的LTP传输方案中的LTP的原始传输,而图18b描绘了根据一个实施例的使用重放缓冲器在LTP传输流中的LTP的重传;

图18c是示出根据一个实施例的使用重试标记和往返标记来防止重放缓冲器LTP被覆写的示意图;

图19是示出根据一个实施例的使用33个传送组(XFR)来传输标准检测LTP的示图;

图20是示出根据一个实施例的使用33个32位XFR和四个LTP序列状态在4通道链路上传输LTP的示图;

图21是示出根据一个实施例的如何使用33个32位XFR在4通道链路上传输包括8字节数据和第65位的微片数据的示图;

图22a-22e共同构成多页流程图,这些流程图示出根据一个实施例的用于使用隐式的ACK以及重放缓冲器促进链路级别的可靠的LTP传输的操作和逻辑,并且还示出根据一个实施例的用于检测错误通道的操作和逻辑;

图23a是根据一个实施例的发射机的状态图;

图23b是根据一个实施例的接收机的状态图;

图24是根据一个实施例的按照XFR组来计算并存储的每通道的CRC的示图;

图25是示出用于图18a和18b的示例的按照每个XFR组来存储的示例性的每通道的CRC计算的示图,其中,在第一LTP序列状态下在坏LTP的原始传输期间以及在第三LTP系列状态下在从重放缓冲器重传该坏LTP的期间计算每通道的CRC;

图26是示出根据一个实施例的在三个通道上的标准检测LTP的传送的示图,其中逐通道并行地传送11个XFR;

图27是示出根据一个实施例的在两个通道上并且采用两个LTP序列状态来传送标准检测LTP的示图,其中在这两个通道中的一个通道上传送17个XFR,并在另一个通道上传输16个XFR;

图28是示出根据一个实施例的使用33个32位XFR在单个通道上传输标准检测LTP的示图;并且

图29是根据一个实施例的包括HFI的系统的示意图。

具体实施方式

本文中描述了用于实现通道错误检测和通道去除机制以减小多通道链路中的数据损坏概率的实施例。在以下描述中,阐述了许多具体细节以提供对本发明的实施例的透彻理解。然而,本领域技术人员将领会,可以不利用这些特定细节中的一个或多个细节或者通过其他方法、部件、材料等来实施本发明。在其他实例中,未详细地示出或描述公知的结构、材料或操作以免使本发明的多个方面含糊。

本申请文件中通篇对“一个实施例”或“实施例”的引用意指结合所述实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。如此,在整篇说明书中的不同位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。

为清楚起见,也可通过附图中的各个部件的标记而不是通过特定的参考编号来指代附图中的各个部件。附加地,可利用跟随有"(typ)"(意指“典型的”)的参考编号示出指代特定类型的部件(与特定的部件相对照)的参考编号。将理解,这些部件的配置将是可能存在、但出于简洁和清楚的目未在附图中示出的典型的或类似的部件。相反,“typ"不应理解为意指该部件、元件等典型地用于它的所公开的功能、实现、目的,等等。

根据本文中描述的实施例的多个方面,提供定义了消息传递、交换的、服务器互连网络的架构。该架构跨越OSI网络模型的层1和层2,充分利用用于层3的IETF网际协议,并且包括用于该架构的层4的新的且被充分利用的规范的组合。

可通过正式定义(诸如,超级计算机)或简单地通过关联来实现该架构以用于互连CPU和包括逻辑消息传递配置的多个其他子系统,如同云计算中常见的情况,此类服务器组或集群由于它们运行的消息传递应用而以某种类型的协作方式运作。互连的部件被称为节点。架构可实现为将处理器节点与SoC、多芯片模块等互连。被称为主机的一种类型的节点是用户模式软件在其上执行的类型。在一个实施例中,主机包括单个高速缓存一致性存储器域(无论该一致性域中的核或CPU的数量),并且可包括各种本地I/O和存储子系统。主机运行的软件的类型可定义更专业化的功能(诸如,用户应用节点、或存储或文件服务器),并用于描述更详细的系统架构。

在顶层,该架构定义以下部件:

·主机结构接口(HFI);

·链路

·交换机;

·网关;以及

·综合性的管理模型。

主机结构接口至少由用于实现该架构的物理层和链路层的逻辑组成,使得节点可附接至结构并向其他服务器或设备发送分组并接收分组。HFI包括用于操作系统和VMM(虚拟机管理器)支持的适当的硬件接口和驱动器。HFI还可包括用于执行或加速上层协议和/或卸载传输协议的专门逻辑。HFI还包括用于响应于来自网络管理部件的消息的逻辑。每一个主机都经由HFI而连接至架构结构。

链路是全双工的点对点互连,这些互连将HFI连接至交换机,将交换机连接至其他交换机,或者将交换机连接至网关。链路可具有以电路板迹线、铜缆或光缆形式的不同的物理配置。在一个实施例中,PHY(物理层)实现、电缆和连接器策略将遵循以太网(特别是100GbE(每秒100千兆比特的以太网,诸如,IEEE802.3bj标准草案(当前草案2.2)中定义的以太网链路)的那些PHY(物理层)实现、电缆和连接器策略。该架构是灵活的,从而支持使用可超过100GbE带宽的未来以太网或其他链路技术。高端超级计算机产品可使用专用(高得多的带宽)的PHY,并且对于这些配置,与架构产品的互操作性将基于具有带有不同的PHY的端口的多个交换机。

交换机是OSI层2的部件,并且由该架构的管理基础设施管理。该架构将网际协议定义为其OSI的层3或互联层,不过该架构既不在IP域中指定任何事物,也不管理IP相关的设备。支持架构结构与外部网络(尤其是以太网)之间的连接性的设备被称为网关。轻量网关可提供降低的功能性,并且严格地在以太网的层2上工作。全功能网关可在层3上以及更高的层上操作,因此表现为路由器。由该架构提供的网关规范包括机制,所述机制用于以太网封装,并用于网关如何能够在该结构上工作以准许至与该架构的其余部分一致的以太网数据中心网络的灵活的连接性。IP用作相互联网协议使得能够使用IETF认可的传输(即TCP、UDP和SCTP)以超出该架构的结构来发送并接收消息。

图1示出根据一个实施例的系统100的高级视图,系统100示出架构的各种部件和互连。该架构的中心特征是结构102,该结构102包括经由架构链路和交换机而互连的HFI和网关的集合。如图1中所描绘,结构102部件包括:多个HFI104(示出一个HFI104),每一个HFI104都由相应的分立的单节点平台106主控;HFI108,由虚拟平台110主控;HFI1121和112n,由多节点平台116的相应节点1141和114n主控;以及集成单节点平台120的HFI1181和118n;高基交换机122;交换机124和126;(多个)结构管理器128;网关130;链路132、134、1361、136n、138、1401、140n、142、144、148以及共同示出为云150的附加的链路和交换机。

如上文所讨论,交换机是层2设备,并且在结构内担当分组转发机构。交换机由结构管理软件集中地供应和管理,并且每一个交换机都包括管理代理以对管理事务作出响应。集中式供应意味着转发表由结构管理软件编程,以实现特定的结构拓扑和转发能力(类似于用于自适应路由的替代路径)。交换机负责执行诸如自适应路由和负载平衡之类的QoS功能,并且还实现阻塞管理功能。

图2描绘了用于在结构链路上传送数据的架构的多个层。这些层包括物理(PHY)层、链路传送子层、链路结构子层以及传输层。在图2的左侧是这些层向OSI参考模型的映射,其中PHY层映射至层1(PHY层),链路传送子层和链路结构子层共同映射至层2(链路层),并且传输层映射至层4(传输层)。

在该架构中,在物理层中,信号被一起集合到端口中,这些端口表现为单片式实体、并且作为单片式实体被控制和报告。端口包括一个或多个物理通道,其中每一个通道都由在物理传输介质中实现的两个差分对或光纤组成(每个通信方向一个差分对或光纤)。构成端口的通道的数量是依赖于实现方式的;然而,链路传送子层的架构支持端口宽度的有限集合。特定的端口宽度被支持为基本端口宽度以允许用于电缆和芯片设计的常见目标。这些端口宽度包括1x、4x、8x、12x和16x,其中“x”标识物理通道的数量。在诸如检测缺陷通道的一些情况下,链路可能在减小的通道宽度下运行。

链路传送子层充当物理层与链路结构子层之间的接口。(链路结构子层处的)链路结构分组被分割成64位流控制数位(FLIT、Flit或微片,流控制数位的近似收缩)。图3示出在捆包302中成组的多个微片300的示例。每一个微片300都包含64个数据位,包括8字节的数据。

链路传送子层将多个通道形成队组(team),这些队组能够以可靠的方式、跨该链路来传送微片以及它们相关联的信用返回信息。这通过使用被称为链路传送分组(LTP)的1056位捆包来完成,所述LTP与链路结构子层相关联。图3还描绘了LTP中包括16个数据微片的数据部分。此外,LTP包括微片类型信息、CRC数据以及任选的数据(未在图3中示出)。在各附图(例如,图5-11)中示出、并在下文中更详细地描述了LTP的示例。

结构分组由64位微片以及针对每个微片的微片类型位组成。结构分组的第一数据微片被称为头微片。结构分组的最后一个数据微片被称为尾微片。结构分组中的任何其他数据微片被称为体微片。在图4中示出结构分组400的示例。

为每一个微片提供微片类型位以将体微片与其他微片类型区分开。在一个实施例中,体微片被编码成将微片类型位置位为1,并且包含64位数据。所有其他微片被标记成将类型位置位为0。头微片被编码成将微片[63]置位为1。所有其他的(非体)微片被编码成将微片[63]置位为0。尾微片被编码成将微片[62]置位为1。所有其他的(非体/头)微片被编码成将微片[62]置位为0。在以下表1中概述了微片编码。

微片类型位微片[63]微片[62]描述1XX体数据微片000空闲的、差的分组以及控制微片。001尾数据微片01X头数据微片

表1

在表2中概述了控制微片。在空(null)LTP中发送仅由链路传送层使用的七个控制微片(LT控制微片)。其余的控制微片被划分成两个组。结构分组(FP)微片包括HeadBadPkt(头坏分组)、BodyBadPkt(体坏分组)以及TailBadPkt(尾坏分组)控制微片以及正常的分组头(Head)微片、体(Body)微片和尾(Tail)微片。链路结构(LF)命令微片包括Idle(空闲的)、VLMrkr(VL标记)和CrdtRet(信用返回)微片。FP微片和LF命令微片可被一起混合在可靠的LTP内以用于在链路上传输。

表2

当没有要插入到数据流中的结构分组微片时,由链路结构层使用空闲命令微片。如果数据路径的完整宽度包含空闲,则链路传送层将从被插入到输入缓冲器中的微片流中去除这些空闲。如果该数据路径既包含空闲的微片又包含非空闲的微片,则将不会去除这些空闲。实现此以使链路传送层将完全相同的数据路径组成呈现给该链路的远侧的链路结构层。如果链路传送层没有来自链路结构层的待处理的微片,则当在该链路上发送原始的微片时,链路传送层将插入空闲。与从重放缓冲器发送的、包括被重传或重放微片的那些微片相比,原始的微片是首次在链路上发送的微片。

链路传送分组保持十六个微片以用于在该链路上传输。可靠的LTP被保持在重放缓冲器中达一时间段,该时间段长至足以保证重传请求的缺乏指示已由链路对等方成功地接收到该可靠的LTP。对于每一个LTP,在发射机处和接收机处维护重放缓冲器位置指针(发射机处为NxtTxLTP,接收机处为NxtRxLTP),但这些重放缓冲器位置指针不作为LTP的部分被交换。当由接收机检测到传输错误时,它将包含NxtRxLTP重放缓冲器位置指针的RetryReqLTP(重试请求LTP)发送至发射机。响应于接收到RetryReqLTP,以原始的顺序重传重放缓冲器中的LTP,以RetryReqLTP(对等方NxtRxLTP)开始,并且以被写入的最后一个重放缓冲器位置(NxtWrLTP-1)结束。空LTP不被保持在重放缓冲器中,并且不被重传。

可在LTP中将链路结构命令微片与FP微片混合;然而,LF命令微片不是结构分组的部分。它们将来自链路的一端处的链路结构子层的控制信息携带至该链路的另一端的链路结构子层。

在一个实施例中,存在三个LTP格式,包括标准检测LTP、14位CRCLTP以及增强型检测LTP。在图5中示出标准检测LTP的实施例。除了十六个微片之外,每一个标准检测LTP还具有16位CRC,该16位CRC覆盖LTP内容。为了说明的目的,图5中的微片为示出为65位,其中位64是微片类型位。

在图6中示出14位CRCLTP的实施例。除了十六个微片之外,每一个14位CRCLTP还具有两位信用边带通道和覆盖LTP内容的14位CRC。在LTP内,在特殊的LF命令微片或在LTP信用边带通道中传输流控制信用。

除了标准检测LTP之外,链路还可支持任选的增强型检测LTP,该任选的增强型检测LTP保持十六个微片并且具有四个十二位CRC字段。图7示出增强型检测LTP的实施例的格式。四个CRC字段中的每一个都覆盖所有十六个微片。如果四个CRC中的任一个是坏的,则重传该LTP。存在用于四个12位CRC的两个CRC计算选项。第一选项(48b重叠)使用四个重叠的计算,其中每一个计算都覆盖该LTP内的所有位。第二选项(每个通道的12b-16bCRC)使用四个不重叠的计算,其中每一个计算限于在四个通道中的一个通道上流动的所有位。

如上文所讨论,在空LTP中发送由链路传送层使用的LT控制微片。空LTP不消耗重放缓冲器中的空间,并且不被重传。使用以上表2中概述的链路传送LT控制微片中的一个对它们进行区分。在顺序的对中发送空LTP类型中的大部分以保证两个中的至少一个由链路对等方无错误地接收,或者保证当两者都存在错误时将自动地生成RetrainRetryReq(重新训练重试请求)。图8中示出了标准检测空LTP的示例。

标准检测空LTP包含单个的区分性控制微片、975个预留位以及标准检测十六位CRC字段。增强型检测空LTP包含单个的区分性控制微片、975个预留位、以及增强型检测四个12位CRC字段。当使用14位CRC时,在空LTP中忽略两个边带位。

对于连接至具有四个通道的链路的能够4x的端口和能够8x的端口两者,在链路上一次传输一个LTP。这在图9a和9b中使用链路结构数据路径视角分别针对标准检测和增强型检测LTP而示出(注意,CRC字段不是按比例的),同时在图10中示出对应的信号处理和传送路径的实施例。14位CRCLTP将类似于图8中示出的标准检测LTP,区别在于,LCRC[15:0]字段将由LCRC[13:0]字段和C[l:0]字段的组合代替。微片传输顺序开始于微片0,并且结束于微片15。

在一个实施例中,每一个通道上的数据的物理传输采用串行的两级位不归零(NRZ)编码位模式,其中对应于每一个通道的数据被解码、解串行化并且对于每个通道每个循环成组为四个字节。这导致传送16字节(包括每个循环的两个微片)。例如,图9a和图10中的图示假设两微片宽度的实现专用的数据路径,其中微片0和1将同时被传输,微片2和3将同时被传输,以此类推。由链路传送子层来计算LCRC。

图11示出LTP传输方案,其中两个4通道链路被结合在一起以支持8x数据路径(其中在8个通道上传输数据)。如图所示,在该方案下,在链路结构与链路传送子层之间的接口处并行地处理来自两个LTP的四个微片。

如上文所讨论,该架构采用三级数据单元粒度来支持数据传送:结构分组、微片以及链路传送分组。链路传送层处的传输单元是LTP。如图所描绘,每一个LTP标称地为16微片长,并且如上所述,LTP的实际尺寸可取决于所使用的特定CRC方案而不同,并且使用称为具有16微片的长度的LTP对应于包含在LTP中的64位数据微片的数量(排除CRC位和16个位65)。

在图12中示出包括四个物理通道的链路的一个实施例的物理层(也称为“PHY”)结构。该PHY定义了链路互连的物理结构,并且负责处理在两个链路对等方(诸如,由部件A和B所描绘)之间的特定的链路上的信号操作的细节。该层管理信号线上的数据传送,包括在跨并行通道发送和接收每一个信息位时涉及的电平、时序方面和逻辑问题。如图12中所示,每一个互连链路的物理连接性由四个差分信号对1200(包括在每个方向上的通道0-3)组成。每一个端口支持由两个单向链路构成的链路对以完成两个对等部件之间的连接。这同时支持两个方向上的通信量。出于说明和便于理解的目的,未在图12中示出图10中示出的通道“混合”;然而将理解,在一些实施例中,发送和接收通道经混合。

如图12中所示,具有链路端口的部件使用一对单向点对点链路进行通信,被定义为链路对等。每一个端口包括发射(Tx)链路接口和接收(Rx)链路接口。对于所示示例,部件A具有Tx端口1202,该Tx端口1202连接至部件B的Rx端口1204。同时,部件B具有Tx端口1204,该Tx端口1206连接至部件A的Rx端口1208。一个单向链路从部件A向部件B发送,而另一个链路从部件B向部件A发送。所述“发射”链路和“接收”链路是相对于哪个部件端口正在发送数据以及哪个链路正在接收数据来定义的。在图12中所示的配置中,部件A发射链路将数据从部件A的Tx端口1202传输到部件B的Rx端口1204。该相同的部件A发射链路是端口B的接收链路。

如先前所陈述,用于链路端口之间的数据传送的基本单元是LTP。每一个LTP专用于在由链路的相对端处的发射端口和接收端口定义的特定的链路上、在一个方向上的传输。LTP具有单次链路传送的寿命,并且通过从适用的VL缓冲器中拉取微片并每次16个地将它们组装到相应的LTP中来动态地生成LTP。如上文中参考图4所讨论,如LTP传输流1210和1212所描绘,LTP作为微片的流被传输,并且各个LTP的第一个和最后一个微片由头微片位和尾微片位界定。

如上文所讨论,该架构定义分组递送机制,该分组递送机制主要包括目的地定路由的结构分组或FP,其中层4的有效载荷尺寸为0字节至10240字节。这提供对发送一系列消息(从简单的ULP确收到经封装的以太网巨型帧)的高效支持。结构分组表示用于进入HFI和离开HFI的有效载荷的逻辑单元。结构分组之所以被称为结构分组是因为它们具有在结构中的端到端的寿命。更具体地,结构分组的寿命是它在如由FP的源地址和目的地地址所定义的结构端点之间传送FP内容所花费的时间。FP的每一个传送路径将包括跨至少一个链路的传送,并且当传送路径横越一个或多个交换机时,可包括跨多个链路的传送。

结合FP和LTP来使用微片促进了对于该架构唯一的数据传送功能。具体而言,FP、微片和LTP的分开支持对虚拟通道的使用以及QoS和结构强健性的各个方面。

如上文所讨论,微片并非被单个地传输,而是将16个微片的组紧缩(捆包)为链路传送分组。这允许多个微片共享共同的链路CRC。LTP中的微片可来自许多不同的结构分组,与其他结构相比,这给予链路协议一些有趣的特性。通过使用高效的分组抢占和交织机制,该架构支持对不同流的数据传送的交织,从而几乎消除了行头(head-of-line)阻塞效应,甚至消除了在物理链路上物理地传送大型单个分组的阻塞效应。在图15和16中示出了结构分组、微片和LTP之间的关系的图示,并且在下文中描述对这些图的进一步的描述。

该架构使用基于信用的流控制来管理该链路的接收机侧的缓冲资源,并且控制发射机何时可以发送微片。在该方法下,对于发送微片的结构端口,它需要可用于在接收端口处所需的缓冲器空间的足够的流控制信用。在一个实施例中,接收机提供多个接收缓冲器的单个池以用于链路上支持的虚拟通道(VL)。由该链路的发射机侧上的逻辑来管理对缓冲器池的分配。为每一个支持的VL分配专用的缓冲器。此外,发射机可将该空间的部分管理为共享池以在VL之间动态地分配。基于信用的流控制意味着在链路上的数据传送被严格地管理;不存在未经授权的数据传送,而且还意味着该结构是所谓的“无损的”结构。在这种情况下,“无损的”简单地意味着,在正常操作期间,微片和由此的分组永不会因为拥塞而被丢弃。

在链路结构(LF)命令微片和链路传送(LT)控制微片中携带诸如流控制信用之类的控制信息。可将LF命令和LT控制微片插入在发射机的微片流中的任何点处。此外,一些LTP格式中的边带信息可用于以甚至更少的开销来传送信用。LF命令和LT控制微片由链路发射机生成,并且由链路接收机消耗。

该架构包括用于链路传送分组和结构分组的CRC以确保数据完整性。该架构还为未被正确地接收的LTP提供链路级重试。LTP重试显著地改善了该链路的有效位错误率,并且允许以较低的功耗换取略微降级的物理BER的PHY策略的使用。LTP重试对大型结构也是有用的,在此大型结构中,结构中的大量链路使好得多的每链路BER特性成为必需以维持可接受的系统级错误率。

抢占和交织

当跨链路发送来自不同的分组的微片时,只要这些分组在不同的VL中,L2链路层就允许交织来自不同分组的这些微片。交织的一个动机是使对给定链路的使用最大化。如果发送的分组出于无论什么原因而被冒泡中断,则可将第二分组交织到信道中,而不是使其保持空闲。交织的第二原因(被称为抢占)是使较高优先级的分组中断正被传送的较低优先级的分组,从而减少此较高优先级的分组的等待时间。

在交织时,将结构分组的微片的全部或部分与来自跨链路传输的该微片流内的其他FP的微片交织。发射机从可用于在端口的输出队列处发送的FP之间选择微片来传输。在一个实施例中,按顺序递送单个VL内的FP,因此在虚拟通道内,在发送来自(那个VL中的)后续的分组的任何微片之前,发送来自一个分组的所有微片。跨不同VL不具有所指定的排序,因此可在微片流内(以及在给定的LTP内,只要在每一个VL内维持微片的排序)任意地交织来自不同VL中的分组的微片。一些发射机实现可选择限制分组之间交织的量。

在抢占时,来自具有较高优先级等级的结构分组的微片抢先于来自具有较低优先级等级的FP的微片。在一个实施例中,每一个虚拟通道与相应的优先级等级相关联。发射机配置成将来自较高优先级的VL的微片插入到链路LTP之上并且位于来自较低优先级的VL的微片之前。发射机可选择将较高优先级的微片插入在大于单个微片的边界处。此外,在发送来自相同优先级的不同的VL中的不同的分组的微片之前,发射机可选择交织来自相同优先级的VL的微片,或者它们可将来自一个分组的所有微片注入到该链路上。链路上的接收机按照VL将传入的微片流分开,以便插入到队列中并转发至下一跳(hop)(用于交换机中的接收机)。一般而言,至少对于给定的链路,接收机实现将支持可由发射机生成的交织的完全范围。在一些实施例中,跨结构来实现类似的交织范围。任选地,不同链路可支持不同水平的交织。

根据分组抢占的多个方面,来自具有第一优先级等级(例如,高优先级)的VL上的分组B的微片可抢先于来自较低优先级的VL(即,具有比第一优先级低的优先级的VL)上的分组A的微片流。在这种情况下,可由来自分组B的头微片来跟随分组A的头微片以及来自分组A的零个或更多个体微片。该头微片指示,新分组正在开始,并且接收机将在L2头部中寻找SC字段以确定VL标识符。将由零个或更多个体微片跟随分组B的头微片,最终尾微片终止分组B。在终止了分组B之后,利用零个或更多个体微片来恢复分组A的传输,所述零个或更多个体微片由尾微片跟随。

当由依次更高优先级的分组(依次更高优先级的VL上的分组)抢占分组时,可嵌套分组抢占。在一个实施例中,这被建模为链表,其中活跃分组在该列表的头部。在当前分组被抢占时,新分组被添加至该列表的头部。当抢占的分组终止时,它从列表中被去除,并且下一预期要恢复的分组是列表的新头部。一次可保持在列表上的分组的最大数量等于所支持的VL的数量。

虽然先前讨论使用优先级等级来描述抢占,但是并没有抢占仅用于较高优先级的分组的要求。可能存在没有来自当前分组的可用于传输(导致“冒泡”)的微片,但存在来自较低优先级的分组的可用的头微片的情况。可发送来自该较低优先级的分组的头微片和依次的体微片。新的头微片将导致分组被添加在列表的头部处,并且接收机将准确地跟踪此新分组。

当在第一分组的尾微片之前发送第二分组的头微片时,分组被视为与第二分组交织。在交织的最简单的情况下,中断头微片之后的所有体微片属于第二分组,直到其尾微片为止,在其尾微片之后,第一分组的其余的分组微片恢复。在图13中以图形方式描绘了这种简单的情况。

该组微片对应于微片流中的微片的顺序(从顶至底)。该组中的第一微片是在虚拟通道0(被标记为VL0)上传送的结构分组的头微片。VL0头微片将该FP标为4微片长(头微片、两个体微片以及尾微片)。第二微片是FPVL0的第一体微片。下一微片被标记为VL1头微片,并且它是在标记为VL1的虚拟通道1上发送的FP的头微片。该VL1头微片也将该FP标识为4微片长。在一种方法下,当来自新的VL的FP的微片与来自当前VL的微片交织时,新的VL成为用于在该链路上发送微片的活跃虚拟通道。这通过将VL1的头微片添加至微片流来描绘。作为结果,FPVL1与FPVL0交织,这通过首先添加VL1头微片,再添加两个VL1体微片以及VL1尾微片来描绘。尾微片标识FPVL1FP的微片的结束,这也使FPVL1交织完成。随后,该逻辑在VL1交织之前返回至FP微片,从而导致在链路上发送其余的FPVL0体微片和尾微片。

为了进一步示出链路结构子层如何支持来自多个结构分组的微片的交织,图14示出进栈和出栈交织的示例。链路结构子层中的交织利用进栈和出栈方案,在此进栈和出栈方案中,中断头微片导致栈中被中断的VL的进栈以及当遇到尾微片时栈中的该VL的出栈。为了使栈如何工作可视化,想象收件箱中的一叠纸以及用于在当前纸上工作的桌面区域。在进栈和出栈交织的情境下,这叠纸被称为“栈”,而桌面区域对应于活跃VL寄存器,在此活跃VL寄存器中,数据标识正在通过其存储微片的活跃虚拟通道。当响应于交织来交换正在被传输的VL时,被交织的VL成为新的活跃VL,而先前的活跃VL被推离桌面而到栈的顶部上,因此称为“进栈”。在FP的VL微片完成时(例如,当该VLFP的尾微片被添加至LTP发射FIFO时),从桌面区域去除该VL,并且使该栈的顶部上的VL弹离该栈至桌面区域上,由此成为新的活跃VL。VL的进栈和出栈能以嵌套方式继续。在链路结构子层支持n个VL的情况下,能被同时中断的分组的最大数量是n-1。

在图14的示例中,微片的有序列表1400表示来自存储在各个VL中的结构分组的微片被添加至微片的传输流的顺序(或任选地,示出在接收端口处接收的微片流中的微片的顺序)。以下描述关于微片流的生成,其中将微片添加至捆包成LTP(即,将被“注入”到该结构中的LTP)的流出流。描绘了活跃VL寄存器1402中处于各种状态的、标识活跃VL的指标。在初始状态下,将对应于VL0的指标存储在活跃VL寄存器1402中,从而指示微片是从为虚拟通道VL0(称为VL0FP)缓冲的下一结构分组添加的。相应地,将VL0FP的前两个微片添加至微片传输流,此刻检测到交织事件,从而发起VL1交织VL0。为了完成该交织操作,用于VL1的指标代替活跃VL寄存器中的VL0,从而将VL0推至栈上。这将活跃虚拟通道切换至VL1,从而将VL1FP的头微片和第一体微片添加至微片传输流。接着,响应于第二交织事件,发起VL2与VL1的交织,从而将VL2加载到活跃VL寄存器1402中,并将VL1推至栈上。这导致将FPVL2的所有三个微片添加至微片传输流。添加FPVL2尾微片完成VL2与VL1的交织,从而导致VL1被弹离栈而进入活跃VL寄存器1402中。添加VL1的另一体微片,之后发起VL7交织VL1,这通过将VL7的指标添加至活跃VL寄存器1402并往回将VL1推至栈来实施。将对应于整个VL7FP的这三个微片添加至微片传输流,从而完成VL7与VL1的交织,并且使VL1弹离栈而往回至活跃VL寄存器1402中。添加VL1FP的尾微片,从而完成VL1的交织,并且使VL0弹离栈而进入活跃VL寄存器1402。这使VL0返回成为活跃VL,并且将VL0FP的最后两个分组添加至LTP发射FIFO。

链路结构子层允许设备利用特殊的LF命令微片(称为“VL标记”)来显式地指定将哪个VL移动至列表的头部,而不依赖于出栈以返回到正在被中断的隐式的VL。使用VL标记由于此附加的标记微片而较不高效,但它提供更多交织的灵活性。图15中的示图表示出了该概念。

VL标记实际上允许从默认的栈排序中拉出VL,或允许将栈中不存在的新VL移至栈的顶部。随后,保留在栈中的VL继续遵循进栈和出栈规则。这两个不同的机制的使用可相互混合,并且不是互斥的。在特定的VL从栈中被拉出且随后由另一VL交织的情况下,它被往回推到栈上。

返回至图15,操作序列以与图14的进栈和出栈示例类似的方式开始,其中初始的活跃虚拟通道是VL0,并且将VL0FP的前两个微片添加至微片传输流1500。与上文类似,下一VL1交织VL0达两个微片,随后,VL2交织VL1。然而,在到达VL2FP尾微片之前,将VL标记1502插入到微片传输流中,从而指示VL0将变成新的活跃VL。这导致VL0从栈中被拉出,并被加载到活跃VL寄存器1402中,并将VL2推至栈的顶部。将VL0的余下的两个微片添加至微片传输流1500,从而完成VL0,并导致使VL2弹离栈而进入活跃VL寄存器1402。这添加VL2的尾微片,从而完成VL2并使VL1弹离栈而进入活跃VL寄存器1402。添加另一VL1体微片,随后发起VL7交织VL1,这将VL7加载到活跃VL寄存器1402中,并将VL1从活跃VL寄存器1402推至栈上。接着将第二VL标记1504添加至微片传输流1500以将活跃虚拟通道往回切换至VL1。这将VL7推至栈上,并将VL1拉入活跃VL寄存器1402中。添加VL1FP尾微片,这样完成VL1的交织,并且使VL7弹离栈并进入活跃VL寄存器1402。随后添加VL7FP的最后两个微片。

出于说明目的并且为了更容易地理解进栈和出栈交织方案和VL标记交织方案,图14和15中示出的交织示例示出了夸张等级的交织。在实际的系统中,大多数交织将来自两种类型的交织事件中的一者:(A)抢占;以及(B)分组流中的冒泡。分别在图16和17中示出了抢占式交织以及抢占式交织和由冒泡事件引起的交织的组合的进一步详细的示例。

如上文所述,在抢占时,具有较高优先级的虚拟通道中的结构分组的内容(微片)可抢先于处于较低优先级的VL的FP的微片向微片传输流的添加。在HFI、网关、或其他类型的结构端点处,构建出结构分组的数据一般最初将以某种其他类型的格式(诸如,将被封装在结构分组中的以太网帧)被缓冲。与生成层3的分组(诸如,IP分组和UDP分组)类似,将结构分组创建为联网的栈的部分也是可能的。在交换机处,接收到和被发送的内容均已被格式化成微片,并且使用附加的元数据来确定哪些微片与哪些FP相关联,以及要在什么交换机端口上将这些微片向外发送至它们的下一跳或端点目的地。鉴于以上内容,图16和17在整体上描绘结构分组,其中FP内容的微片格式化在FP下方。

每一个FP的微片内容被临时地存储在分配给为FP指派的虚拟通道的缓冲器中。在各种缓冲器配置实施例中,可将分开的缓冲器分配给相应的VL,一些VL可共享缓冲器空间,或可能存在两者的组合,其中VL缓冲器分配的第一部分对于那个VL是私有的,而另一部分是共享的缓冲器空间。

使用虚拟通道的基本方面在于,给定的虚拟通道中的内容保持有序。这意味着,对于给的定虚拟通道,一个FP不可越过另一FP。此外,FP的微片也保持它们原始被生成的顺序。同时,不同的虚拟通道中的内容不一定要相对于其他虚拟通道保持有序。这使得更较优先级的通信量抢先于更低优先级的通信量。虚拟通道还可用于消除路由和协议死锁,并避免多个通信量类别之间的线端阻塞。

如图16中所示,存在用于相应的虚拟通道VL1、VL2、VL3的三个缓冲器1602、1604和1606。这些虚拟通道中的每一个也被分配相应的优先级等级——VL1为低优先级,VL2为中优先级,并且VL3为高优先级。仲裁器(未示出)用于确定从哪个VL缓冲器拉出微片以添加至微片传输流1608,在此微片传输流1608中,微片被捆包到LTP2、3、4、5、6和7中。图16是“滑动窗口”图,描绘了在所描绘的窗口时间帧上的VL(VL1、VL2和VL3)的链路通信量的处理。在一个实施例中,VL缓冲器被实现为FIFO(先入先出)缓冲器,其中每一个FIFO槽的尺寸设定成用于存储微片。

如上文所讨论,在抢占式交织的一个方面,被分配给较高优先级的VL的FP内容可抢先于被分配给较低优先级的VL的FP内容。一般而言,如果在相应的VL出口(将被注入到结构中)缓冲器中缓冲对应于多个FP的FP内容,则被分配给具有最高优先级的VL的FP内容将被添加至微片传输流。然而,应注意这不是绝对的规则,因为可能存在其中不发生抢占的情形。同时,如果FP内容仅对给定的VL或具有相同优先级的多个VL是可用的,则无论(当前不具有任何被缓冲的内容的)其他VL的优先级等级如何,FP内容都将被添加至微片传输流。在图16中示出此情形,如下所述。

在时刻T1,在VL1缓冲器1602中缓冲分组1的至少第一部分,并且分组1的至少第一部分准备好进行传输。由于该架构下的数据传送的流式性质,微片既可被接收在VL缓冲器处被接收(添加至VL缓冲器),也可从VL缓冲器去除(以用于传输)。此外,将微片添加至VL缓冲器以及从VL缓冲器去除微片可能在某种程度上是异步的,尤其是在交换机处。作为结果,在任何给定的时间点,给定的VL缓冲器可具有或不具有被缓存且准备好传输的内容。在图16的示例中,在时刻T1,仅VL1缓冲器1602包含准备好传输的微片,而VL2缓冲器1604和VL3缓冲器1606是空的。为了发起将FP分组的微片添加至微片传输流,至少一个或多个头微片(取决于特定的FP格式)需要在VLFIFO缓冲器的头部处。(如下文中进一步详细地所描述,在一个实施例中,VL缓冲器被实现为圆形FIFO,其中FIFO头部通过FIFO头部指针来标识。)在图16中,在时刻T1,在VL1缓冲器1602的头部处缓冲头微片1610。

在时刻T1,将第一组微片1612添加至微片传输流1608的LTP2,其中在时刻T2,头微片被添加在微片1612的开始处,T1与T2之间的时间差表示仲裁器识别出活跃VL将被改变为VL1缓冲器1602所花费的时间量以及用于将微片数据从缓冲器复制到微片传输流1608的时间。图16中的T1与T2之间的差不是按比例的,而相反用于示出在当FP数据到达VL缓冲器并准备好传输与当数据实际被添加至微片传输流之间将会有某个有限的时间。

在时刻T3,已在VL2缓冲器1604处接收到分组2的第一部分,以头微片1615开始。由于VL2具有比VL1更高的优先级,因此由仲裁器(或未示出的其它逻辑)检测到抢占事件。取决于实现方式,可在分组2的(多个)头微片到达VL2缓冲器1604FIFO的头部之后立刻检测到抢占事件,或者可能存在一些延迟以减少某种程度的交织的出现,因为附加的交织会导致在其他端口处产生冒泡,从而导致甚至更多的交织。例如,如果具有添加至微片传输流的微片的当前分组仅具有一些剩余的微片,并且将成为抢占的分组是大的,则该逻辑可等待当前分组完成,使得对当前分组的抢占不发生。响应于抢占事件,使用进栈和出栈方案来将活跃VL从VL1切换至VL2。任选地,可使用VL标记交织方案。

响应于将活跃VL从VL1切换至VL2,将用于VL2的指标加载到活跃VL寄存器中,并且将VL1推至栈上。如时刻T4处所描绘,从VL2缓冲器1604FIFO拉出第一组微片1616,并将此第一组微片1616添加至微片传输流1608。这导致有利于分组2而抢占对分组1的传输,并且导致来自分组1和分组2的微片的交织。

在时刻T5处,已在VL3缓冲器1604处接收到分组3的第一部分,以头微片1618开始。由于VL3具有比VL2更高的优先级,因此由仲裁器(或未示出的其他逻辑)检测到第二抢占事件。这导致有利于传输分组3而抢占对分组2的传输,这是通过将VL3的指标加载到活跃VL寄存器中并将VL2推至栈上来实施的。如时刻T6处的开始所描绘,将分组3的微片1620的全部添加至微片传输流1608,从而使分组3的微片与分组2的微片交织。

结合将尾微片1622添加至微片传输流1608,仲裁器(或其他逻辑)检测到,添加来自分组3的微片已完成。因此,从活跃VL寄存器去除VL3,并且使VL2弹离栈而到活跃VL寄存器中,从而使VL2返回成为活跃VL。这导致分组2的其余的微片1624被添加至微片传输流1608,开始于时刻T7并结束于时刻T8,在时刻T8处,检测到已经添加了尾微片1626并且因此分组2已完成。这导致使VL1弹离栈而至活跃VL寄存器中,并且VL1代替VL2成为活跃VL。随后,将分组1的其余微片1628添加至微片传输流1608,从而在时刻T9处、在尾微片1630处完成。随后,将用于下一结构分组的头微片添加为LTP7的最后一个微片(为简明起见未示出下一结构分组)。

图17示出冒泡交织事件以及跟随其后的抢占交织事件。当结构分组的多个微片横越包括多个跳的路由路径时,这些微片的部分可能在一个或多个交换机处被抢占。这导致给定的FP的微片流的中断。当在接收端口处接收到此类被中断的微片流时,在当在抢占之前被传输的微片的部分与当在抢占之后被传输的微片的部分之间存在间隙。这导致“冒泡”。除了该冒泡示例之外,还可能因为各种其他原因而产生冒泡。响应于检测到此类冒泡,可实现与来自具有与带有冒泡的FP相同或更低的优先级等级的FP的微片之间的交织。

如同图16的示例,在时刻T1,在VL1FIFO缓冲器1602中接收到包括头微片1700的、分组1的至少第一部分,并在时刻T2开始,将微片的第一部分1702添加至微片传输流1704的LTP2。在时刻T3,在VL2FIFO缓冲器1604处接收到分组2的微片的第一部分,以头微片1706开始。VL1和VL2两者都被分配低优先级,因此分组1和分组2中的每一个被分配相同的低优先级等级。虽然FP和/或它们的微片在被分配给相同虚拟通道时不能越过彼此,但准许FP和/或它们的微片在被分配给不同的虚拟通道时越过彼此。当不同的虚拟通道具有相同的优先级等级时,也会产生该情形。一般而言,当两个(或更多个)虚拟通道中的FP共享相同的优先级等级时,将FP整体地(经由其微片)添加至微片传输流,例如,添加第一FP的所有微片,添加第二FP的所有微片,等等。选择接下来将哪个FP从共享相同的优先级等级的多个VL发送出将是仲裁器选择逻辑的功能,仲裁器通常将设计成平等地(或公平地平等地)对待FP的传输。例如,在一些实施例中,可实现轮循方案。此类轮循方案还可考虑FP的长度,使得跨多个VL的缓冲器使用等级针对某个等级。例如,两个VL之间的仅轮循方法将交替发送VL中的FP,而使用等级法可发送来自VL中的一个的第一FP,随后如果第一FP显著地大于第二和第三FP则发送来自另一VL的第二和第三FP。

在图17中所示的示例下,通常将发送分组1的所有微片,随后是分组2的所有微片(假定没有抢占交织事件,并且仅考虑VL1和VL2以进行仲裁)。然而,如图所示,在分组1的微片的传输中具有开始于时刻T4的冒泡。仲裁器逻辑将结合VL2FIFO缓冲器1604中的分组2的微片的可用性来考虑冒泡的存在。作为响应,检测到冒泡交织事件,这导致在时刻T5开始,分组2的微片1708与分组1的微片交织。如同抢占式交织,通过将VL2加载到活跃VL寄存器中并将VL1推至栈上,交织的发起开始。

当来自分组2的微片正被添加至微片传输流1704时,在时刻T6,开始将分组1的微片的第二(以及余下)部分接收并缓存在VL1FIFO缓冲器1602中。虽然这些微片可用于立即传输,但它们在时刻T6的接收不产生交织事件(或者以其他方式结束来自分组2的微片的交织)。相反,来自分组2的微片继续被添加至微片传输流1704,直到在时刻T7响应于检测到在VL3FIFO缓冲器1606中包括头微片1710的分组3微片的可用性而检测到抢占式交织事件为止。如同图16的示例,VL3具有也比VL1或VL2的优先级更高的高优先级等级。作为结果,高优先级分组3的微片的可用性发起分组3的微片1712与分组2的微片的抢占式交织,这开始于时刻T8,并通过添加尾微片1715而完成于时刻T9。在完成分组3的交织时,使VL2弹离栈,并且将VL2加载到活跃VL寄存器中,从而使VL2活跃虚拟通道而返回。这导致将分组2的余下微片1716添加至微片传输流1704。

在分组2的完成时(如由时刻T10处的微片传输流1704的尾微片1718所标识),使VL1弹离栈并将VL1加载到活跃VL寄存器中,从而使VL1作为活跃VL而返回。这导致将对应于分组1的其余部分的微片1720添加至微片传输流1704,其中当在时刻T11添加尾微片1722时,完成分组1的微片的添加。

链路可靠性

如上文所讨论,该架构的结构是“无损的”,这意味着在接收到分组时从不丢弃分组,或在传输期间从不以其他方式“丢失”分组。这经由主要包括使用基于信用的流控制和使用重放缓冲器的机制的组合来完成。在基于信用的方法下,发送单元(例如,HFI、交换机或网关)将不会将微片发送至接收单元(例如,另一HFI或交换机),除非该发送单元具有用于传输这些微片的信用;信用是在每个VL基础上的,并且用于指示接收机具有足够的缓冲器空间以用于将用于这些微片的VL。

取决于使用了标准检测还是增强型检测LTP,每一个LTP包括用于验证数据完整性的一个或多个CRC。对LTP的数据内容计算(多个)CRC,并且将得到的(多个)CRC值附到LTP的尾部、跟随最后的微片(微片15),如图5-8中所示,并且如上文所述。在接收到(多个)CRC时,重新计算(多个)CRC,并且在接收到的LTP的(多个)CRC与接收到数据中的(多个)CRC之间进行比较以判定是否存在任何数据错误。如果传输的CRC与对接收到数据计算的CRC不匹配,则检测到数据错误。响应于检测到CRC失配,通过使用重放缓冲器来重传该LTP。

“可靠的”LTP被保持在重放缓冲器中达足够长以保证重传请求的缺乏指示已由对等方成功地接收该“可靠的”LTP的时间段。在该方法下,接收机不发送ACK来确收分组已被成功地接收;相反,在往返时间周期内重传请求的缺乏提供了已跨链路成功地传送了LTP的隐式的确收。使用术语“可靠的”LTP是为了将保持在重放缓冲器中的LTP与未保持在重放缓冲器中的其他LTP(诸如,空LTP)区分开。相应地,不重传空LTP。

对于每一个LTP,在发射机处和在接收机处维护重放缓冲器位置指针(发射机处为NxtTxLTP,接收机处为NxtRxLTP),但这些指针不作为LTP的部分被交换。当由接收机(经由CRC失配)检测到传输错误时,它将包含NxtRxLTP(下一RxLTP)重放缓冲器位置指针的RetryReqLTP(重试请求LTP)发送至发射机。当在发射机处接收到RetryReqLTP之后,以原始的顺序重传重放缓冲器中的LTP,以RetryReqLTP(对等方NxtRxLTP)开始,并且以被写入的最后一个重放缓冲器位置结束。在一个实施例中,使用了用于写入LTP数据的下一重放缓冲器槽(NxtWrLTP),从而被写入的最后的重放缓冲器位置是NxtWrLTP-1。

结合检测到由CRC失配指示的链路错误,实现第二机制以确定哪一个通道是错误的。该机制采用仅在接收机处计算的每通道的CRC,并且不使用与所传输的数据中的每通道的CRC的比较(因为不存在)。相反,每通道的CRC用于将对于具有CRC失配的LTP计算的每通道的CRC与对于经由重放缓冲器重传的同一LTP(基于每一个通道或每一个传送组)重新计算的对应的每通道的CRC作比较,如下文所讨论。

在图18a和18b中示出连同对用于检测错误通道的每通道的CRC的使用的、对重放缓冲器的使用的示例。在该示例中,正在将包括LTP传输流1604的LTP2、3、4、5、6和7的LTP传输流从设备A的链路接口A传输至该链路另一端处的对等设备B的链路接口B。更具体地,使用与以上讨论的图17中所示的四通道链路互连类似的四通道链路互连来将LTP传输流从链路接口A的发送端口1800传输至链路接口B的接收端口。在该架构的链路下,在并行的多个通道上串行地发送LTP内容。如上文所讨论,通道的数量可取决于特定的链路配置而不同;此外,还支持具有减少数量的通道的链路上的传送。作为示例而非限制,在被称为单位间隔(UI)的时间周期期间,在每一个通道上传输单个位。在一个实施例中,LTP数据的传送被分割成被称为传送单元(XFR)的数据单元。在一个实施例中,每一个XFR是32位数量。在一个实施例中,使用同一通道来传输XFR的所有位。在一些实施例中,可在多个通道上传输一些XFR。

图19示出用于标准检测LTP的XFR的映射,该标准检测LTP具有1056位的长度。每一个XFR为32位长,并且在单个通道上被传送。相应地,存在用于每一个LTP的33个XFR。图20示出根据一个实施例的用于四通道链路的每通道的XFR映射。为了说明目的和简单起见,每个微片标称地为64位。然而,如图3中所示,每一个微片具有额外的第65位,该额外的65位整体地使用(对于体微片)或部分地使用(对于头微片和尾微片以及控制微片)以标识其微片类型。在传输期间,整齐地传输多个第65位,这意味着,在对在多个通道上并行地传输的串行化传输的位流的解串形化和再组装时,在1056位标准检测LTP中的每个第65个位的位置处都存在第65位。

在四通道链路的一个实施例中,在32UI上、并行地在链路上传送用于两个微片的数据位,使得(逻辑地)一起传送包括四个XFR的128个位。然而,如上所述,每个第65个位置由微片类型位占据。作为结果,XFR并非确切地按照2:1来与微片映射。相反,如图21中所示,这些额外的第65位的整齐的存在导致经包裹的传送。

更详细地,在一个实施例中,对于每128个UI报告额外的两个位,从而导致在完成8组四通道XFR之后16位的聚合。这8组包括前32个XFR,并且第33个XFR包括微片15的最后16位(加上其第65位),随后是16位CRC(或任选地,用于CRC-14LTP的14位CRC加上2个控制信道位)。为了说明目的且易于理解,可在本文中将微片示为以64位的单元来传送;然而将理解,在一个实施例中,实际上以65位的单元来传送微片。

返回至图20的四通道XFR映射,对于每个1056位的标准检测LTP使用33个XFR导致为每一个LTP包裹一个XFR。这转而根据通道0、通道1、通道2、通道3、返回至通道0、通道1……以此类推的LTP起始通道序列而使每一个随后的LTP的起始点移动至下一通道。这在本文中这被称为四通道标准检测LTP“序列”,或简称为LTP序列(如应用于本文中所示和所讨论的在四个通道上的标准检测LTP传送)。为方便起见,LTP序列状态被示出为第一、第二、第三和第四,不过在一个实施例中,使用两个位将其跟踪为0、1、2、3。

如图18a中所示,由传输链路控制块1804来执行LTP传输流1604中的微片的串行化和映射(或该操作的部分以其他方式由未示出的另一块来执行)。在由传输链路控制块1804处理之前,将每一个可靠的LTP的数据内容复制到重放缓冲器1806中的LTP槽中的一个LTP槽中,其中该槽由NxtWrLTP指针1807标识。一般而言,重放缓冲器可具有可变的尺寸或预定的尺寸。在一个实施例中,重放缓冲器可选择性地配置成多个预定的尺寸中的一个。

如图所示,在一个实施例中,重放缓冲器实现为圆形FIFO,其中,下一个传输LTP(NxtTxLTP)指针1808具有从最后一个FIFO槽往回环绕到第一FIFO槽(在此示例中,从槽7环绕到槽0)的值。使用圆形FIFO导致先前的LTP数据(对应于先前传输的LTP)被新的(接下来将传输的)LTP数据覆写;然而,提供措施以确保没有LTP数据被覆写,直到检测到LTP数据已被成功地传送的隐式的确收为止,如下文所详述。该方案促进数据在链路上的可靠的传输而无需使用显式的ACK,从而减少了与使用ACK相关联的开销。这也减少了用于支持用于链路层上的协议(诸如,TCP)的基于ACK的可靠的传输方案必需的传输端口处的缓冲。

参考图22a-22e的流程图2200a-e以及图23a和23b的发射机和接收机状态机图2370和2350,根据一个实施例,以如下方式实现对链路错误的处置(包括对错误链路通道的检测)。在链路初始化过程期间,在该链路的接口的对等发送端口与接收端口之间交换各种信息,从而建立双向的通信链路。在该过程期间,将重放缓冲器的NxtTxLTP指针1808和接收侧上的对应的下一接收LTP(NxtRxLTP)指针1810初始化为0。在成功的链路初始化之后,如由开始框2202以及图23a和图23b中的用于发射机和接收机的LinkTransferActive.normal(链路传送活跃.正常)状态所描绘,链路传送模式设置为“正常”,并且LTP准备好跨链路被传送。为清楚起见,以下讨论集中在数据在一个方向上被传送;可在相反方向上(使用单独的通道集合)执行类似的操作以支持该链路上的双向通信。

随着LTP传输流1604中的LTP被顺序地传输,LTP的数据被顺序地复制到重放缓冲器1806中,并且NxtTxLTP指针1808对于每一个LTP进展一个槽(或一旦到达最后一个槽(MyLTPmax)就往回环绕到0)。对于图18a中所示的示例状态,LTP2-6先前已从发送端口1800被传输,并且先前已由接收端口1802接收到的LTP2和LTP3由Rx链路控制块1805处理,并且基于LTPCRC匹配而被确定为是好的LTP。LTP4将被接收,而LTP5和6在传输中(这些LTP的数据已从发射机端口1800被向外发送,但尚未在接收端口1802处接收到)。

返回至流程图2200a,主流程环路开始于框2204,在框2204中,在接收端口处接收LTP。在图18a的示例中,通过在接收端口1802处接收LTP4来描绘该操作。如框2206中所描绘,对于每一个通道,基于在适用的LTP序列状态期间在该通道上接收导的数据来计算CRC,并且将此CRC写入每通道的CRC寄存器(如由CRC通道寄存器CRC-L0、CRC-L1、CRC-L2和CRC-L3所描绘)。在一个实施例中,这些寄存器中的数据被当前LTP的CRC计算结果覆写,使得CRC通道寄存器仅存储最近处理的LTP的数据。在一个实施例中,四通道链路的每通道的CRC是12位CRC,该12位CRC是随着接收到每一个通道的多个位而动态地计算的。

在框2208中,计算接收到的LTP数据的CRC(RxCRC),并将其与所传输的LTP中的TxCRC进行比较。由发送端口1800使用将被传输至接收机的LTP数据来计算TxCRC,并且该TxCRC被附到LTP的结束处,如本文中的各种LTP格式中所示。接收机从接收到的LTP数据中提取TxCRC,并且将此TxCRC对接收到的LTP数据计算的RxCRC进行比较。在决策框2210中,作出接收到的TxCRC与计算出的RxCRC是否匹配的判定。如果它们匹配,则如框2212中所描绘,认为该LTP是好的,并且执行对LTP数据的正常处理,并且该逻辑返回至框2204以处理下一个接收到的LTP。

在图18a中所示的示例中,LTP4的TxCRC与RxCRC不匹配(CRC失配),这指示LTP数据错误。链路数据错误可能源自各种链路条件,而在此刻,导致错误的特定的链路条件是未知的;已知的是接收到的LTP数据与被发送的LTP数据不同,因此接收到的LTP具有错误数据,并且将不被进一步处理。失配的LTPCRC对应于决策框2210的“否”结果,从而导致该逻辑继续至框2214,在框2214中,将LTP描绘为是坏的,也由接收机状态图2350中的RcvBadLTP(接收坏LTP)来描绘。响应于检测到坏的LTP,如由框2216(在图22a中)、2218和2220(在图22b中)中的每一个中的操作所描绘,基本上并行地发起并执行多个操作。

如框2216中所描绘,在每通道或每XFR组的基础上存储针对坏的LTP计算出的每通道的CRC值。如果每个LTP的XFR的数量可被通道的数量整除,则在每通道的基础上存储每通道的CRC值;否则,在每个XFR组的基础上来存储它们。例如,对于具有三个活跃通道和33个XFR的链路,存储每通道的CRC值,因为33/3=11。反之,对于四通道或两通道,在每个XFR组的基础上存储每通道的CRC值(33/4=7.5以及33/2=16.5)。如果存储了每个XFR组的CRC,则在寄存器1814中存储接收LTP序列状态。

在图24中示出每个XFR组的CRC的示例。如图所示,跨四个通道针对其计算每通道的CRC的XFR的数量不相等;相反,通道中的一个对于每个标准检测LTP将接收9个32位XFR(从而为288位),而其他三个通道将接收8个32位XFR(从而为256位)。此外,接收9个32位XFR的通道将取决于LTP序列状态。如将在下文进一步详细讨论,通过将具有CRC失配的LTP的每个XFR组的CRC与同一LTP的后续的重传进行比较,可使用所存储的每通道的CRC来检测哪个或哪些通道产生了错误。由于用于原始的LTP传输的LTP序列可能与用于重传的LTP的LTP序列不同,因此可采用每个XFR组的CRC。每个XRF组的CRC将导致比较对相同的XFR计算的CRC,而如果使用每通道的CRC方案,则当操作具有四个通道或两个通道的链路时,这可能导致或可能不导致对相同的XFR进行的CRC计算(对于四个通道的链路,有25%的机会相同;对于两个通道的链路,有50%的机会相同)。

如图24中所示,每个XFR组的CRC被标记为CRC-G0、CRC-G1、CRC-G2以及CRC-G3。针对其计算这些CRC的传送将取决于通道和LTP序列状态两者。例如,对于第一LTP序列状态,通过在通道0上接收到的9个XFR(XFR0、4、8、12、16、20、24、28和32)来计算XRC-G0,而针对CRC-G1、CRC-G2和CRC-G3的计算值将分别取决于对通道1、2和3所描绘的8个XFR。在第二LTP序列状态下,通过通道1上的9个XFR来计算CRC-G0,而针对CRC-G1、CRC-G2和CRC-G3的计算值将分别取决于对通道2、3和1所描绘的8个XFR。如图所示,对第三和第四LTP序列状态使用了类似的方法。

在图18a中描绘的时间帧期间,LTP序列状态是1,从而CRC-G0、CRC-G1、CRC-G2和CRC-G3分别是通过在通道0、1、2和3上对于LTP4接收到的数据来计算的。在图18a和25中示出对于每个XFR组的CRC-G0、CRC-G1、CRC-G2和CRC-G3值的、对LTP的示例性计算,并且分别是428、556、208和804。这些每个XFR组的CRC值被存储在寄存器CRC-G0、CRC-G1、CRC-G2以及CRC-G3中。

继续图22b中的流程图2200b,在框2218中,将重传请求(RetryReqLTP1812)从接收机返回至发射机,从而经由NxtRxLTP指针1810的当前值来标识坏的LTP。在一个实施例中,发送顺序的RetryReqLTP对,而在另一实施例中,发送单个的RetrReqLTP。在该示例中,NxtRxLTP指针值指向重放缓冲器槽4,槽4存储LTP4(坏的LTP)的数据。在图22c的流程图2200c中示出在重放模式下响应于接收到RetryReqLTP而发起的发射机侧操作的细节。

同样,当在框2216中检测到坏的LTP之后,在框2220中,将LTP接收模式设置成“LTP抛弃”,从而导致接收到的LTP(包括坏的LTP)被抛弃(丢弃)。在接收机状态图2350中,LTP抛弃模式被描绘为LTA.RxTossing状态。虽然接收机在LTP抛弃模式下操作,但是LTP被接收,每通道的CRC被计算且寄存器被更新,执行LTPCRC错误校验以检测顺序的LTPCRC错误,并且丢弃LTP。以环路方式执行这些操作,以在框2222中接收LTP开始。如之前所述,执行框2206和2208的操作,随后在决策框2224中作出接收到的LTP是否具有CRC错误(TxCRC和RxCRC失配)的判定。虽然接收机在LTP抛弃模式下操作,但该逻辑配置成校验顺序的LTPCRC错误的出现。例如,如果在进入LTP抛弃模式之后第一个接收到的LTP具有错误,则已经发生了顺序的错误。通过决策框2226描绘检测到顺序的错误的确定,如果对决策框2224的回答为“是”,则该逻辑继续至决策框2226。此外,在框2225中递增总的LTPCRC错误计数。(还应注意,无论出于正常模式还是抛弃模式,都响应于检测到每一个LTCCRC错误来递增总的LTPCRC错误计数。)

CRC是配置成检测所传输数据单元(诸如,分组、帧等)中的错误的数据完整性校验。CRC的数学公式化被选择成使得CRC将检测位传输错误,并且还利用数字数据的二进制性质,从而使得能够迅速对二进制量计算CRC。然而,CRC不是100%失效保护的。当位错误的数量等于或超过CRC的汉明距离(Hammingdistance)时,CRC校验可能无法检测错误。在网络结构中使用的CRC的汉明距离典型地是4,这意味着开启错误将不被检测到的可能性(极其低的概率)需要至少4个位错误。未检测到的链路错误导致称为“假分组接受”的情况,这意味着具有错误的分组(虚假地)通过了CRC校验,从而被接受以用于进一步处理。这些未检测到的错误导致分组无记载数据损坏。

LTP的尺寸大约是1000位。在给定的平均位错误率(BER)下,与错误跨多个LTP随时间分布情况下的均匀的错误模式相比,如果错误在单个链路传送分组内猝发地(4个或更多个)被关联并出现,则未命中的检测的概率更高。

网络结构链路设计成提供非常低但非零的BER。减小链路功率的期望提供允许更高的BER的动机,当减小功率时,BER趋向于增加。随着BER提高,未命中的错误检测的概率升高。在某个时刻,该概率变得不可接受地高。跨结构内的许多链路的BER是不均匀的。链路典型地由多个通道组成,并且BER跨给定的链路内的多个通道上可广泛地变化。在常规方法下,当结构管理软件检测到以某个阈值BER运行的链路时,迫使该结构管理软件将该链路从结构中去除以避免不可接受地高的数据损坏概率。这是在不知晓链路内的错误分布的情况下完成的,并强制使用保守性的更小的BER阈值,该更小的BER阈值假定错误是相关的。此外,链路的BER可能随时间漂移和/或降级,并变得不可接受地高。结构管理器不能总是实时地连续监测所有的链路;结果,检测到链路正在以过高的BER操作可能花费一些时间。在该时间期间,该结构可能暴露于数据损坏的可能性。

对紧密间隔的位错误的一种校验是通过使用决策框2224中的LTPCRC错误校验和决策框2226中的顺序的LTPCRC错误校验。虽然CRC可用于标识检测到至少一个错误,但是它们不标识存在多少错误。然而,顺序的LTPCRC错误指示至少两个错误存在于序列化的LTP中。在一个实施例中,响应于检测到顺序的LTPCRC错误,在框2228中,将一对RetrainReqLTP(重新训练请求LTP)发送至发射机,从而导致流程图逻辑退出以重新训练该链路,如由退出框2232和发射机状态机2300中的RcvRetrainReq(接收重新训练请求)所描绘。在一个实施例中,该重新训练是轻量的重新训练,它不如在初始化或重新初始化链路时采用的链路(重新)训练操作复杂。在训练或重新初始化期间,该链路的正常活跃传送状态是离线的,这意味着正常的数据传送操作是暂时不可用的,直到在完成链路训练或链路重新初始化之后该链路返回至其正常活跃传送状态为止。此外,接收机设置一些内部指标以指示它在框2230中发送了RetrainReqLTP,并且在框2231中重置链路连续错误定时器,链路序列化错误定时器的使用的进一步细节在图22e中示出,并且在下文中讨论。在完成训练序列之后,该逻辑返回至流程图2200b的框2218和2220,其中将(多个)重试请求LTP往回发送到发送侧,并且在接收机处重新进入LTP抛弃模式。

响应于接收到重试标记LTP,退出LTP抛弃模式循环,相应地,如果接收到的LTP不具有CRC错误,则该逻辑继续至决策框2234,在决策框2234中,作出在LTP抛弃模式下每一个接收到的好的LTP是否是重试标记的判定。在接收到重传请求之前,发射机将继续按顺序传输LTP,并且这些LTP将与已经在传输中的LTP(如果存在)一起被接收。如图22c的流程图2200c中的框2238、2240和2242中所示,在接收到重传请求(RetryReqLTP)之后,发射机将向外发送重试标记,随后是在重放缓冲器1806中的LTP的重传,此重传从由经由重传请求而返回的NxtRxLTP指针值指示的槽中的LTP开始。在一个实施例中,发送单个重试标记,而在另一实施例中,顺序地发送一对重试标记。在一个实施例中,通过发送这对重试标记的顺序来标识这对重试标记(例如RetryMrkr0(重试标记0),RetryMrkrl(重试标记1))。在一个实施例中,重试标记中的每一个都包括空LTP。在图18b中示出由RetryMrkrLTP(重试标记LTP)1816描绘的单个重试标记的使用的示例。将理解,当发送一对重试标记时,第二重试标记(RetryMrkr1)将紧跟着RetryMrkrLTP1816(RetryMrkr0)。

在图18a的示例中,在接收到传输请求之前继续传输LTP导致按顺序接收LTP5和6(在传输中)、LTP7(接下来传输)以及LTP0和1。由于LTP5、6、7、0和1中的每一个都不是重试标记,因此对每一个而言,对决策框2234的回答都是“否”,并且逻辑继续以在框2236中丢弃LTP,随后,往回循环至框2222以接收下一LTP,同时保持在LTP抛弃模式中。对后续接收到的LTP的处理以相同的方式继续,直到在决策框2234中接收并检测到重试标记LTP为止。

图18b描绘了时间帧,在该时间帧处,RetryMrkrLTP1816已经被传输、由接收端口1802接收并处理,LTP4已经被重传,并且由接收端口1802接收,随后是重传的LTP5和6(在传输中),并且LTP7将被重传。LTP4、5和6中的每一个都包括“重放的”LTP。还如图18b中所示,槽0和1中的重放缓冲器数据(图18a中示出)被LTP0和1结合它们的原始传输的对应的微片数据覆写,所述原始的传输在接收到RetryReqLTP1812以及传输RetryMrkrLTP1816之前发生。

和之前一样,对于每一个可靠的LTP传输,将LTP的数据复制到重放缓冲器1806中由NxtTxLTP指针1808标识的槽中,对于每一个可靠的LTP,递增该指针。因此,将结合发送LTP7、0和1(注意,NxtTxLTP指针从7往回环绕到0)中的每一个来递增NxtTxLTP指针1808。当LTP1正在被传输(或不久前被传输)时,发送端口1800已经接收到RetryReqLTP1812。作为响应,发送端口1800返回RetryMrkrLTP1816(或一对重试标记,其包括RetryMrkr0LTP和随后的RetryMrkr1LTP)。由于RetryMrkrLTP1816是空LTP,引起其数据内容不被复制至重放缓冲器1806,NxtTxLTP指针1808也不前进。反之,无论是可靠的LTP还是空LTP,对于每一个传输的LTP,使TxLTP序列状态前进。

返回至决策框2234,在接收到RetryMrkrLTP1816之后,它被标识为重试标记,并且该流程图逻辑继续至图22d中的流程图2200d。如在框2252中所示,处理重试标记,并且接收机设置倒计数值以准备好接收即将到来的重放的坏LTP。在一个实施例中,采用相对于重试标记的坏LTP重放偏移,以便指示该坏LTP的重传将在重试标记之后的k个LTP处开始。在采用一对重试标记的一个实施例中,坏LTP重放偏移比第二重试标记小一。同样如框2240中所描绘,鉴于坏的LTP重放偏移,接收机基于LTP偏移来发起坏LTP重放倒计数。使用此来检测框2256中的坏LTP的重放。此外,在框2254中,接收机返回往返标记LTP(或一对往返标记LTP),并且在框2254中,将LTP接收模式(接收状态)返回至正常,并且流程图逻辑返回至框2204以接收下一分组。这通过接收机状态图2350中的SendRndTripMrkrPair(发送往返标记对)状态和返回至LinkTransferActive.normal状态来描绘。如下文中参考图18c所描述,响应于(多个)重试标记LTP而返回(多个)往返标记LTP,以便于确定是否可以覆写重放缓冲器LTP。

在传输RetryMrkrLTP1816(或RetryMrkr0LTP和RetryMrkr1LTP)之后,发起LTP的重放(重传),以由在RetryReqLTP1812中返回的NxtRxLTP指针标识的坏LTP(在本示例中是LTP4)的重传开始。当发射机处于重放模式时,所传输的数据将包括存储在重放缓冲器1806中的LTP的重传。重传的LTP基于重传的LTP在重放缓冲器的FIFO中的顺序地从发送端口1800向外发送这些重传的LTP,并且以由NxtRxLTP指针指向的LTP开始。

对于每一个重传的LTP,所传输的数据与原始地传输LTP时相同。除了坏LTP重放倒计数(以及与接收重放的坏LTP相关联的操作)之外,接收侧逻辑不知道接收到的LTP数据对应于原始传输的LTP还是重传的LTP。相应地,执行框2204、2206和2208以及决策框2210的操作,导致每通道CRC计算、对接收到的LTP数据的RxLTPCRC的计算、以及将RxLTPCRC与TxLTPCRC进行比较。如果如由决策框2210中的“否”结果所指示存在错误,则该逻辑返回至框2214,其中,错误的重传的LTP发起新的重放序列,在该新重放序列下将再次重传该坏的LTP。这将基本上重复以上结合来自重放缓冲器1806的坏LTP4以及随后的LTP的重传所讨论的操作。

假定重传的坏LTP4是好的,则该逻辑流至框2258。在该框中,将先前存储在寄存器CRC-G0、CRC-G1、CRC-G2和CRC-G3中的每通道的CRC值与对于重传的LTP4的每一个通道上接收到的数据计算的每通道的CRC值进行比较,取决于操作通道的数量,在每通道或每个XFR组的基础上进行该比较(注意,当传送组的数量相同时,每通道与每个XFR组的比较是等价的,使得总是可以执行每个XFR组的比较)。根据以上描述,对于四通道链路,在每个XFR组的基础上来比较每通道的CRC。

结合每一个被传输的LTP的TxLTP和RxLTP序列状态的持续递增,当重传LTP4时,LTP序列状态是3,相比之下,当最初传输LTP时,LTP序列状态为1。作为结果,跨每一个通道传输的XFR组已经改变。在图25中示出通道-XFR组的重新映射,并且通过比较在图18a和18b中的每一个通道上发送的XFR也可以看出。如上文所讨论,当最初传输LTP4时,LTP序列状态是1,而当重传LTP4时(在图25中由4R描绘),LTP序列状态是3。

返回至图18b,为通道0、1、2和3计算重传的LTP4的每通道的CRC,随后,在流程图2200d的框2258中,执行每一个XFR组的CRC比较,并且如果适用,在框2260中,通过标识失配的每通道或每个XFR组的CRC来标识坏的通道。在图18a和18b的示例中,每个XFR组的CRC比较的结果指示,CRC-G0、CRC-G1和CRC-G3的CRC匹配,而CRC-G1的CRC不匹配。这指示通道2是错误的,因为通道2对应于在最初传输错误的LTP4时对其计算该错误的LTP4的CRC-G1值的XFR组,注意由于在重传的LTP4中未检测到LTPCRC错误,因此在对于重放的LTP4的通道2上传输的数据中也(假定)没有错误。在框2261中,递增经标识的坏通道的错误计数。

考虑通道间歇性出错的场景。如上文所讨论,决策框2226以及相关联的逻辑块的顺序的LTPCRC错误校验是用于检测在该链路上传输的数据中的紧密间隔的错误的一种机制。虽然该机制检测非常紧密间隔的错误(要求在顺序的LTP中的错误),但是它无法标识哪个通道是出错的,也无法标识序列化的错误在各个通道上多频繁地发生。

根据第二BER检查机制的实施例,监测每通道的错误频率以判定给定的通道的错误频率(BER)是否超过每通道的BER阈值。在一个实施例中,这通过使用每通道的顺序的错误计数器和定时器(结合流程图2200d和2200e中描绘的并以并行方式执行的其他操作和逻辑)来完成。

在决策框2262中,作出接收机状态是否正在离开由该接收机发起的链路重新训练状态的判定。如由流程图2200b中的逻辑所示且如上所述,对顺序的LTPCRC错误的检测将导致由接收机检测到错误发起的链路重新训练。反之,虽然单个LTPCRC错误将类似地发起重试请求、重试标记接收序列,但它将不会导致链路重新训练的发起。如果重放的LTP是好的,并且接收状态不是正在离开链路重新训练(即,仅已检测到单个LTPCRC错误),则对决策框2262的回答是“否”,这导致该逻辑流至框2264,在框2264中,如同LTP是原始被发送的LTP那样来处理该LTP。随后,该逻辑返回至流程图2200a,以便如最初发送LTP那样(从接收机的角度看)来处理后续经重放的LTP。

现在假定由接收机检测到两个顺序的LTPCRC错误,导致由接收机发起链路重新训练,并且对决策框2262的回答为“是”,从而导致该逻辑继续至框2266。在该框中,递增在框2260中确定的坏通道的连续错误计数器。在决策框2268中,作出该通道的连续错误计数是否已达到阈值的判定。一般而言,该阈值将是整数,诸如1、2,等等。在一个实施例中,该阈值是2,使得在一个定时器周期内,一个通道上的2个顺序的错误导致该通道BER阈值检测进行。作为响应,在一个实施例中,该逻辑继续至退出框2270,在退出框2270中,中重新初始化该链路,并且去除被检测为坏的通道。作为结果,链路的活跃通道的数量可减少一个通道,诸如,四通道链路被降级为三个活跃通道。

如果每通道的顺序的错误计数未达到阈值,则对决策框2268的回答为“否”,并且该逻辑继续至框2204以接收下一LTP,并且接收机以其正常的接收状态操作,且发射机仍然以重放模式操作。

如上文所讨论,在一个实施例中,使用定时器方案来检测每通道的顺序的错误的频率。根据以上描述,响应于检测到顺序的坏LTP,该逻辑继续至框2231,并且如图22e的流程图2200e所示,发起用于实现定时器方案的一组并行的操作。在框2272,如果适用,则启动(第一次)或重新启动(重置)定时器。如由决策框2274以及回到其自身的循环所描绘,周期性地校验定时器以确定它是否已期满,或者任选地,可将定时器逻辑配置成生成中断或指示它已期满的其他指标。如框2276中所描绘,在定时器期满时,递减每一个通道的坏的连续错误计时器。在一个实施例中,最小的坏错误计数是0,因此对于已经是0的通道错误计数,不递减其计数。

并行过程的组合以如下方式检测单个通道上的错误已经超过频率阈值(例如,标识呈现紧密间隔的错误的通道)。每当流程图操作导致该逻辑流过框2258、2260并且决策框2264的结果为“是”时,将递增坏通道的连续错误计数器。同时,考虑并行的定时器操作,每一次定时器期满而不被重启指示,该定时器的时间周期已经过去且没有每通道的错误,因此将每一个通道的每通道连续错误计数递减一(直到最小值零)。在一个实施例中,出现“两连击(twostrikes)”使得该通道出局,这对应于在该定时器周期内具有两个连续错误的通道。

除了单个定时器之外,可并行于不同的时间周期以及不同的相关联计数阈值来使用多个定时器。例如,这将使得能够观察到每通道的操作的更长期视图,同时也便于更短的每通道的BER阈值检测。还可改变该时间周期中要求的连续错误数量的阈值。

在流程图2200a-e中描绘的实施例下,链路的重新初始化和坏通道的去除源自检测到呈现紧密间隔的错误的通道。然而,这不意味着是限制性的,因为可结合在其他条件下链路的重新初始化和/或重新训练链路来去除通道,所述其他条件诸如,当在检测到连续的LTPCRC错误之后、经由退出框2232退出时。例如,当链路被重新初始化时,校验多个每通道错误计数器以查明错误计数是否已经超过某个阈值。如果已经超过阈值,则那个通道被标记为是坏的,并且当链路返回至活跃操作时,那个通道不是活跃的。

利用隐式的ACK的可靠的LTP传输的另一方面是用于确保在已经无错误地接收到隐式的确认之前不覆写重放缓冲器中的LTP的机制。在一个实施例中,这通过使用重试请求和往返标记来促进。如上文所讨论,在一些实施例中,重放缓冲器具有固定的尺寸,或者可经配置以设置成使用多个固定尺寸中的一个尺寸来操作。此外,一对链路对等方可采用不同尺寸的重放缓冲器。

在使用固定尺寸的重放缓冲器的情况下,由于对各种处理等待时间的附加的考量,重放缓冲器的尺寸一般将被确定为用于保持多个LTP,这多个LTP的数量大于可在该链路的往返横越期间传送的LTP的数量。这是图18a和18b中示出的情况,其中重放缓冲器具有8个槽,并且可能正并发地在该链路以及相反方向上的链路路径上横越往返的LTP的数量为大约6或7个LTP。作为结果,如果在接收机处检测到错误,则在重放缓冲器中的坏LTP的副本被覆写之前,发射机将接收重试请求。

然而,出于实际原因,固定尺寸的重放缓冲器的尺寸未被设定成处理所有可能的链路长度。链路的长度越长,在接收到重试请求之前可从重放缓冲器向外发送的LTP的数量就越大。在某种情况下,链路长度将使得单独使用重试请求方案将无法确保在接收到对于坏LTP的重试请求之前在重放缓冲器中的那个坏LTP的副本不被覆写。

这是往返标记的使用适用的情况。返回流程图2200c的决策框2244,作出所有LTP的重放是否已完成而没有接收到往返标记的判定。在图18c中所示的配置下,在重放缓冲器1806中同样存在8个FIFO槽,但链路长度使得5个LTP可以同一时刻“在线上”,这意味着至少10个LTP可能在往返途中和/或正在接收机处被处理。作为结果,在接收到对于LTP中的任一个的重试请求之前,可重传重放缓冲器中的所有LTP副本,从而导致潜在地坏的LTP的副本被覆写。这将防止重传坏的LTP,从而使重放缓冲器的目的无效。

为了适应该场景,发射机包括用于如决策框2244中所示的、在接收到往返标记之前检测是否已到达重放LTP的结束的逻辑。本质上,这确定重放缓冲器的深度是小于还是大于往返持续时间。通过重放指针往回环绕到第一个经重放的LTP的开始(FIFO槽)来检测到达重返LTP的结束。

在图18c中,第一个经重放的LTP槽是槽4,并且已顺序地重传了槽4、5、6、7、0、1、2和3中的LTP,从而在接收到一对往返标记1822a和1822b中的第一往返标记之前,使重放LTP指针返回至槽4。这示出在接收到往返标记之前到达重放LTP的结束、从而指示往返持续时间大于重放缓冲器的深度的示例。这导致对决策框2244的回答为“是”,并且逻辑继续至框2245a,在框2245a中,发射机的空计数器(Nullcount)n被重置为整数k。如由框2246a以及决策框2248(决策框2248的“否”结果往回循环到框2246a)所描绘,随后,发射机继续将一个或多个空LTP发送至接收机,直到接收到往返标记或重试请求为止。此外,对于每一个传输的空LTP,将空计数n递增1。如上问所讨论,空LTP不是可靠的LTP,因此不将所所传输的LTP的副本添加至重放缓冲器。作为结果,将保证导致重试请求的坏LTP的副本在接收到重试请求之前不被覆写。

一旦在决策框2248a中确定了接收到往返标记,则该逻辑就继续至框2250,在框2250中,使发射机返回至正常传送模式——也如同由返回至图23a的发射机状态机2300中的LinkTransferActive.normal所描述,同时对于通过重放缓冲器的每一个循环使用空计数n值以确定一旦到达重放缓冲器的结束将要发送多少空LTP。例如,比如说空计数n达到4。作为结果,每当重放缓冲器FIFO槽到达槽7,发射机就将向外发送4个空LTP。在一个实施例下,重试请求和往返标记具有最高的优先级并且永不被抢占,因此使用传输由空计数n定义的多个空LTP将确保坏在接收到对于坏LTP的重试请求之前将不覆写那个坏LTP的副本。作为选项,可在框2245中将空计数n重置为值k>0以提供安全的裕度,使得将在通过重放缓冲器的每一个循环的结束处传输k个额外的空LTP。空计数方案的固有优势在于,它可被实现为支持基本任何长度的链路(认识到物理链路的长度存在实际的限制,并且制造和/或实现具有超过该限制的长度的链路既不可能也不实际)。

返回至决策框2224,如果在到达第一FIFO槽之前已经接收到往返标记,则对决策框2244的回答为“否”,并且逻辑继续至框2245b,在框2245b中,将空计数n重置为整数m。如由框2246b和决策框2249(决策框2249的“否”结果往回循环到框2246b)所描绘,随后,发射机继续进行以继续将LTP重放至接收机,直到缓冲器指针已经环绕并返回至其起始槽或空计数n已经到达零,其中空计数倒计数以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。

响应于检测到坏的通道,能以降级的状态、利用减少数量的活跃通道来操作链路。此外,该链路的降级的状态可级联,使得链路可按顺序操作,诸如,以四个活跃通道开始,检测到第一个坏通道并去除该坏通道,从而导致利用三个活跃通道进行的链路操作,检测到第二个坏通道并去除该第二个坏通道,从而导致利用两个活跃通道进行的链路操作。该级联能以检测到第三个坏通道继续进行,从而导致在单个余下的好通道上的链路操作。还应注意,能以不对称的配置操作链路,使得一个传输方向可使用与另一传输方向不同数量的活跃通道。

图26描绘根据一个实施例的用于利用三个活跃通道来操作链路的XFR组。在该实例中,存在三个XFR组G0、G1和G2,并且对应的CRC是CRC-G0、CRC-G1以及CRC-G2。由于该LTP序列仅具有单个状态,并且XFR模式被重复而没有通道改变,因此在相同的相应通道上传输相同的XFR组。作为结果,可在每通道的基础上进行每通道的CRC比较,或者以其他方式的每个XFR组的基础不考虑LTP序列状态。在3个通道下,对于每一个通道存在11个32位传送,从而导致在每个通道上对于每个标准检测LTP传输352个位。在一个实施例中,当在三个活跃通道下操作时,使用16位的每通道的CRC。

图27描绘根据一个实施例的用于利用两个活跃通道来操作链路的XFR组。由于每个LTP存在33个32位传送,因此在LTP传输流的通道0和1中的每一个通道上传送的位的数量将在512位与544位之间交替。作为结果,使用两个LTP序列状态来实现每个XFR组的每通道的CRC比较方案。此外,在一个实施例中,使用16位的每通道的CRC。

图28描绘根据一个实施例的、用于利用单个活跃通道来操作链路的XFR组。由于仅有在其上发送LTP数据的单个通道,因此它是唯一可能出错的通道。作为结果,不需要执行每通道的CRC比较。然而,在其中具有多于单个通道的链路被降级至在单个通道下操作的通道降级场景下,仍可对于该单个的通道计算每通道的CRC计算,因为这可在硬件中、以总是来执行它的方式来实现。在该实例中,简单地忽略每通道的CRC计算。

如上所讨论,在本文中公开的实施例中,链路支持可靠的数据传输,而无需使用显式的ACK。虽然当跨链路传输LTP时不会丢失LTP(不考虑诸如电缆被割断的事件),但是LTP可能包含错误。回想一下,隐式的确收方案经由在时间段内在发射机处没有接收到重试请求来实现的,该时间段至少与完成从发射机到接收机并回到发射机的往返路程花费的时间一样长。由于在与被传送的数据不同的通道集合上发送重试请求,因此单个重试请求会具有错误(通过CRC校验来标识)从而被抛弃是可能的。作为结果,接收侧链路接口可能正在尝试通知发射侧链路接口它接收到出错的LTP,但是该通知(由重试请求指示)将被抛弃。这是发送顺序的RetryReqLTP对以及其他空LTP对(例如RetryMrkr0,RetryMrkrl)有助于促进隐式的ACK方案的情况。

首先,由于这些是空LTP,因此不将它们存储在重放缓冲器中,从而它们不可用于重传。然而,通过发送空顺序的LTP对,保证了两个事件中的一者将产生:1)无错地成功接收到两个空LTP中的至少一个或这两个空LTP;或2)如果这两个LTP都具有错误,则这将被检测为连续的LTP错误,从而触发对该链路的重新训练。在(重新)训练期间,通过链路合作方的发射机-接收机对来执行训练序列,从而在将该链路返回至活跃操作之前验证该链路在两个方向上的适当的操作。当重新训练完成时,发送侧当在发送(多个)重试标记之后开始发送新的LTP(或LTP的继续的重放)之前,等待来自接收侧的有保证的重试请求(同时发送空LTP)。发送一对这些空分组的另一益处在于,提高了LTP中的至少一个将是良好的可能性。

图29示出了具有示例性配置的节点2900,该示例性配置包括主机结构接口2902,该主机结构接口2902包括耦合至处理器2906的结构端口2904,该处理器2906又耦合至存储器2908。如图1中所示,系统节点可能具有各种配置,诸如但不限于由分立的单节点平台106、虚拟化平台110、多节点平台116和集成单节点平台120示出的那些配置。一般而言,每个节点配置将包括至少一个处理器、存储器以及具有图29中所示的类似的部件的至少一个HFI。

除了如下文中所讨论的在图29中示出以及未示出的其他电路和逻辑,结构端口2904还包括具有与图18a-18c中所示的配置类似的配置的发射端口1800和接收端口1802。发射端口1800包括:Tx链路结构子层电路和逻辑2910,包括分区为多个发射VL缓冲器的发射缓冲器(Tbuf);Tx链路传送子层电路和逻辑2912;TxPHY电路和逻辑2914,包括四个发射机2916;以及Tx链路控制块1804。接收端口1802包括:Rx链路结构子层电路和逻辑2918,包括分区为多个接收VL缓冲器的接收缓冲器;Rx链路传送子层电路和逻辑2920;RxPHY电路和逻辑2922,包括四个接收机2924;以及Rx链路控制块1805。

Tx链路结构子层电路和逻辑2910配置成实现本文中描述的链路结构子层操作的发射侧方面。除了图29中示出的发射缓冲器和发射VL缓冲器,未示出的用于促进这些操作的部件和块包括结构分组构建块,此结构分组构建块包括L4封装子块、仲裁逻辑和信用管理器,所述L4封装子块配置成执行对以太网、无限带宽和原生架构分组的L4封装。此外,在链路结构子层处实现用于促进QoS操作的逻辑的部分(也未示出)。

Tx链路传送子层电路和逻辑2912配置成实现本文中描述的链路传送子层操作的发射侧方面。这些方面包括用于捆包LTP、准备LTP流以换手至TxPHY、以及支持响应于RetryReq(重试请求)而进行的对LTP的重放的各种部件和逻辑块,包括重试逻辑、LTP捆包块、重放缓冲器以及NxtWrLTP和NxtTxLTP指针(均未示出)。此外,为Tx链路传送子层实现Tx链路控制块1804的部分和QoS功能。

以简化的形式示出TxPHY电路和逻辑2914,此TxPHY电路和逻辑2914包括四个发射机2916和Tx链路控制块1804的部分。一般而言,取决于链路的PHY层配置,发射机2916可包括电气或光学发射机。联网领域的普通技术人员将理解,TxPHY电路和逻辑块将包括附加的电路和逻辑,用于实现为了清楚起见而未示出的发射侧PHY层操作。这包括PHY层内的各种子层,这些子层用于促进结合高速互连来实现的各种特征以减少错误并增强传输特性。

Rx链路结构子层电路和逻辑2918配置成实现本文中描述的链路结构子层操作的接收侧方面。除了所示出的接收缓冲器和接收VL缓冲器,用于促进这些操作的未示出的部件和块包括结构分组重新组装块(包括L4分组解封装子块)、信用返回块以及QoS接收侧逻辑的部分。

Rx链路传送子层电路和逻辑2920配置成实现本文中描述的链路传送子层操作的接收侧方面。这些包括用于分拆LTP、检测LTPCRC和每通道的CRC错误、接收机抛弃模式和相关联的操作、以及QoS操作的各种部件和逻辑块,诸如,图18a-18c中示出并且在上文中讨论的那些部件和逻辑块。

以简化的形式示出RxPHY电路和逻辑2922,此RxPHY电路和逻辑2922包括四个接收机2924和Rx链路控制块1805的部分。一般而言,取决于链路的PHY层配置,接收机2924可包括电气或光学发射机,并且接收机2924将配置成在链路上接收来自发射机2916的信号。联网领域的普通技术人员将理解,RxPHY电路和逻辑块将包括附加的电路和逻辑,用于实现为了清楚起见而未示出的接收侧PHY层操作。这包括PHY层内的各种子层,这些子层用于促进结合高速互连来实现的各种特征以减少错误并增强传输特性。

HFI2902进一步包括耦合至PCIe(外围组件互连快速)接口(I/F)2930的发射引擎2926和接收引擎2928。发射引擎2926包括发射缓冲器2932,在该发射缓冲器2932中,缓冲L4分组(例如,包括经封装的TCP/IP分组的以太网分组、无限带宽分组)和/或结构分组。在一个实施例中,用于发射缓冲器2932的存储器的全部或部分包括存储器映射的输入/输出(MMIO)地址空间,也称为编程IO(PIO)空间。MMIO使处理器2906能够经由例如直接存储器访问来执行对发射缓冲器2932的直接写入(DMA写入)。

接收引擎2928包括接收缓冲器2934和DMA引擎2936。接收缓冲器用于缓冲接收端口1802的输出,接收端口1802可包括结构分组和/或L4分组。DMA引擎2936配置成执行DMA写入以将来自接收缓冲器2934的分组数据复制到存储器2908和/或处理器2906中的多个存储器高速缓存级中的一个。例如,在一些实施例中,以DMA方式将分组头部数据写入高速缓存,同时以DMA方式将分组有效载荷数据写入存储器。

处理器2906包括CPU2938,该CPU2938包括多个处理器核2940,每一个处理器核都包括集成的第1级和第2级(L1/L2)高速缓存并耦合至一致性互连2942。耦合至存储器2908的存储器接口2944、集成输入/输出块(IIO)2946以及末级高速缓存(LLC)2948也耦合至一致性互连2942。IIO2946在由处理器核、存储器和高速缓存所采用的一致性域与用于IO部件和IO接口(包括一对PCIe根复合体(RC)2950和2952)的非一致性域之间提供接口。如本领域公知,PCIeRC位于PCIe互连层次结构的顶部,多个PCIe接口和PCIe设备可耦合至PCIeRC,如PCIe接口2954、2956、2958和2960所示。如图所示,PCIe2956耦合至HFI2902的PCIe接口2930。

在诸如图29中所示的一些实施例中,处理器2912采用SoC架构。在其他实施例中,PCIe相关的部件集成在耦合到处理器的IO芯片组等中。在其他实施例中,处理器2912以及一个或多个HFI2902被集成在SoC上,诸如,由SoC2962的虚线轮廓所描绘。

如进一步在图29中示出,软件应用2964和结构vNIC2966包括在处理器核2940中的一个或多个上运行的软件组件或由运行在处理器2906上的操作系统主控的一个或多个虚拟机。除了这些软件组件之外,存在实现在存储器2908中的附加的软件组件和缓冲器,以促进在存储器2908(包括适用的多个高速缓存级)与发射引擎2926和接收引擎2934之间的数据传送。

一般而言,在本文的附图中描绘的电路、逻辑和部件还可在各种类型的集成电路(例如,半导体芯片)和模块中实现,包括分立的芯片、SoC、多芯片模块以及包括对多个网络接口的支持的联网/链路接口芯片。此外,如本文中所使用,用于实施各种操作的电路和逻辑可经由嵌入式逻辑、嵌入式处理器、控制器、微引擎来实现,或以其他方式使用硬件、软件和/或固件的任何组合来实现。例如,通过各种逻辑块和/或电路描绘的操作可使用编程逻辑门等(包括但不限于,ASIC、FPGA、IP块库)来实现,或通过在包括处理器、处理器核、控制器、微控制器、微引擎等的一个或多个处理元件上执行的软件或固件指令中的一个或多个来实现。

另外,本说明书的多个实施例的方面可以不仅在半导体芯片、SOC、多芯片模块等之内实现,而且还可在非瞬态的机器可读介质内实现。例如,上述设计可被存储在和/或嵌入在与用于设计半导体器件的设计工具相关联的非瞬态机器可读介质内。示例包括用VHSIC硬件描述语言(VHDL)语言、Verilog语言或SPICE语言、或其他硬件描述语言来格式化的网表(netlist)。一些网表的示例包括:行为级网表、寄存器传送级(RTL)网表、门级网表以及晶体管级网表。机器可读介质还包括具有诸如GDS-II文件之类的布局信息的介质。此外,用于半导体芯片设计的网表文件或其他机器可读介质可被用在模拟环境中以执行以上教导的方法。

虽然参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式也是可能的。另外,附图中所示的和/或本文中描述的元件或其他特征的布置和/或顺序不必以所示和所描述的特定方式来布置。根据一些实施例,许多其他布置是可能的。

在附图中示出的每一个系统中,在一些情况下的每个元件可具有相同或不同的附图标记以表明所表示的元件可能不同和/或类似。但是,元件可以足够灵活以具有不同的实现方式,并与本文所示或所述的一些或所有系统一起操作。附图中示出的各种元件可以是相同或不同的。将哪个称为第一元件以及将哪个称为第二元件是任意的。

在以上具体实施方式和权利要求中的诸如'n’,‘m’,‘k’之类的斜体字用于描绘整数,并且特定字母的使用不限于特定实施例。此外,在不同的权利要求中可使用相同字母以表示不同的整数,或者可使用不同的字母。此外,在具体实施方式中使用特定字母可能或可能不匹配在涉及具体实施方式中的相同主题的权利要求中使用的字母。

在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接的”来指示两个或更多个元件彼此直接物理和/或电接触。“耦合的”可意味着两个或更多个元件直接物理或电接触。然而,“耦合的”也可意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协作或相互作用。

实施例是本发明的实现或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合这些实施例描述的特定的特征、结构或特性被包括在本发明的至少一些实施例中,而不一定在所有的实施例中。各处出现的“实施例”、“一个实施例”或“一些实施例”不一定都指相同的实施例。

并非本文中描述和示出的所有部件、特征、结构、特性等都需要被包括在特定实施例或多个实施例中。例如,如果说明书陈述“可”、“可能”或“能够”包括部件、特征、结构或特性,则不一定包括该特定的部件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则这并不意味着仅有一个该元件。如果说明书或权利要求书引用“附加的”元件,则不排除有多于一个的该附加的元件。

上文对本发明的所示出的本发明的各实施例的描述(包括在摘要所描述的内容)不是详尽的,也不将本发明限于上文所公开的精确形式。尽管为了说明,本文中描述了本发明的具体实施例以及示例,但是,如相关领域技术人员所理解,在本发明的范围内,各种等效的修改是可能的。

可以根据上面的具体实施方式对本发明进行这些修改。所附权利要求书中所使用的术语不应该被理解为将本发明限制于说明书和附图中所公开的特定实施例。相反,本发明的范围完全由所附权利要求书来确定,权利要求书根据权利要求解释的建立的原则来解释。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号