CN107040326A - 百亿亿次级结构时间同步 - Google Patents
百亿亿次级结构时间同步 Download PDFInfo
- Publication number
- CN107040326A CN107040326A CN201611224436.4A CN201611224436A CN107040326A CN 107040326 A CN107040326 A CN 107040326A CN 201611224436 A CN201611224436 A CN 201611224436A CN 107040326 A CN107040326 A CN 107040326A
- Authority
- CN
- China
- Prior art keywords
- clock
- node
- port
- flit
- master clock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0682—Clock or time synchronisation in a network by delay compensation, e.g. by compensation of propagation delay or variations thereof, by ranging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于实现跨百亿亿次级结构的时间同步的方法和装置。主时钟节点经由包括多个结构交换机和多个结构链路的结构耦合到多个从节点,其中每一个从节点经由遍历至少一个结构交换机的各自的时钟树路径连接至该主时钟节点。该结构交换机被配置为选择地沿着具有固定延迟的旁路掉该交换机的缓冲器和交换机电路的路径内部转发主时钟时间数据,这使得全部时钟树路径同样具有固定延迟。针对每一个从节点确定该时钟树路径的固定延迟。然后通过使用由每一个从节点接收的主时钟时间数据和确定的从主时钟节点到从节点的时钟树路径的固定延迟将从节点的本地时钟与主时钟进行同步。还提供了用于确定主时钟和本地时钟之间的时钟速率不匹配的技术。
Description
背景技术
近些年,大幅度地提高了对高性能计算(HPC)的使用和兴趣。历史上,HPC通常与所谓的“超级计算机”相关联。超级计算机主要由西摩克雷(Seymour Cray)在控制数据公司(CDC)、克雷研究公司(Cray Research)以及后来具有克雷的名字或由其首字母组成的图案的公司在20世纪60年代提出,最初被研制,并且持续数十年。虽然20世纪70年代超级计算机仅使用少量处理器,然而在20世纪90年代开始出现具有数千个处理器,并且最近已经实现了具有几十万“现成的(off-the-shelf)”处理器的大规模并行超级计算机。
存在很各种HPC架构,面向实现以及研究两者,以及具有各种级别的规模和性能。然而,共同的线程是大量计算单元(诸如,处理器和/或处理器核心)的互连从而以并行的方式协作地执行任务。在最近的片上系统(SoC)设计和提案中,使用二维(2D)阵列、圆环、环或其他配置在单个SoC上实现数十个处理器核心等等。此外,研究者已经提出了3D SoC,其中在3D阵列中对数百个或者甚至数千个处理器核心进行互连。独立的多核处理器和SoC也可能密集地位于服务板上,其继而经由背板等通信地互连。另一通用方法为对服务器机架(例如,刀片服务器和模块)中的典型地被配置2D阵列中作为计算节点的集群的计算单元进行互连。
存在需要在各种服务器和/或计算节点的集合之间进行精确同步的各种类型的处理任务。举例来说,当部署在集群中时,计算节点典型地在它们自身之间发送消息,并且接收消息的顺序是非常重要的。为此,存在可能用于确保消息以适当的顺序处理的各种排序模型,包括FIFO(先入先出)、全排序以及因果排序。这些排序方案的每一个都需要额外的开销,这导致了性能降低。举例来说,FIFO排序可能典型地需要使用FIFO路由器,全排序需要通过中央实体发送消息,并且因果排序是典型地使用向量时钟实现的。
理想地,最有效的排序方案会简单地包括使用绝对时间为每一个消息标记时间戳。这会支持绝对排序,它对于很多HPC和其他过程来说是优选的排序方案。然而,这固有地难以实现,因为不存在如在HPC环境中进行共享的绝对时间的此类事物。更确切地,时间并不需要太绝对,而是在每一个服务器上运行的时钟是同步的。
一种用于同步时钟的方案由IEEE 1588标准定义。IEEE 1588提供了一种用于对经由能够多播的网络(例如,以太网)连接的时钟进行同步的标准协议。IEEE 1588被设计为在需要很少网络带宽开销、处理功率以及管理设置的异构网络的时钟当中提供容错同步。IEEE 1588通过定义称为精确时间协议或者PTP的协议来进行提供。
时钟的异构网络是包括不同特性的时钟的网络,所述不同特性的时钟诸如时钟的时间源的来源,以及时钟频率的稳定性。PTP协议提供了一种将所有参与时钟同步至该网络中的最高质量时钟的容错方法。IEEE 1588定义了时钟特性的标准集组合针对每一个定义了数值范围。通过运行分布式算法,称为最佳主时钟算法(BMC),该网络中的每一个时钟识别出最高质量的时钟;其是具有最好特性集合的时钟。
最高排位的时钟被称为“主(grandmaster)”时钟,并使所有其他的“从(slave)”时钟同步。如果“主”时钟被从网络中移除,或者如果它的特性以它不再是“最佳”时钟的方式改变,那么BMC算法为参与时钟提供了用于自动地确定当前“最佳”时钟的方式,当前“最佳”时钟成为新的主时钟。最佳主时钟算法提供了确定该时钟用作整个网络的时间源的容错并且管理自由的方式。
从时钟通过使用双向多播通信同步至1588主时钟。主时钟周期性地发出称为“同步”包的数据包,其包括当该数据包离开主时钟时的时间的时间戳。主时钟还可以选择性地,发出包括该“同步”包的时间戳的“跟踪”包。使用单独的“跟踪”包允许主时钟精确地在其中数据包的离开时间事先无法确切得知的网络上对“同步”包标记时间戳。举例来说,以太网通信的冲突检测和随机退避机制防止知晓该数据包的准确发送时间直到在没有检测到冲突的情况下在数据包被完全发送,此时不可能改变数据包的内容。
虽然IEEE 1588和PTP为某些应用提供了充足水平的时钟同步(近似数十微秒),但仍不足精确到满足很多HPC环境的需要。因此,实现一种比IEEE 1588好上数个数量级的维持时钟同步的机制将是有利的。
附图说明
通过参考下面的详细描述并结合附图,前述的各方面以及本发明随之而来的很多优点将变得更易于理解同时变得更好地理解,其中,除非另行指明,在附图中不同视图的类似的附图标记表示类似的部件。
图1是示出了根据一个实施例的包括结构架构的各种组件和互连的系统的高层次视图的示意图;
图2是描述根据一个实施例的通过结构链路传输数据的各架构层的示意图;
图3是示出了组成为一组的多个flit的示意图;
图4是示出了根据一个实施例的结构数据包的结构的示意图;
图5是示出了根据一个实施例的标准检测LTP的数据结构的图;
图6是示出了根据一个实施例的14位CRC LTP的数据结构的图;
图7是示出了根据一个实施例的增强的检测LTP的数据结构的图;
图8是示出了根据一个实施例的标准检测空LTP的数据结构的图;
图9是示出了根据一个实施例的在使用4个通道的两个链路端口之间的双向数据传输的示例的示意图;
图10a是示出了根据一个实施例的其中实现了时间同步的结构中的示例时钟树的示意图;
图10b是示出了在其中备份主时钟节点代替原始主时钟节点的对图10a进行展开的示意图;
图11a是被配置为使用接近交换机边缘的环形母线对在上游时钟端口和下游时钟端口之间传输时钟数据的交换机的示意图;
图11b是示出了根据一个实施例的时钟端口的进一步细节的示意图;
图12是示出了根据一个实施例的主时钟高SPC flit的格式的图;
图13是示出了根据一个实施例的主时钟低SPC flit的格式的图;
图14是示出了根据一个实施例的用于确定主节点时钟和从节点上的本地时钟之间的时钟漂移的操作和逻辑的流程图;
图15是示出了根据一个实施例的用于计算时钟树路径延迟的操作和逻辑的流程图;以及
图16是示出了用于在主时钟和本地时钟之间执行时钟同步的操作并进一步示出了使用经由图14的流程图确定的时钟漂移的对同步的时钟进行更新的流程图。
具体实施方式
用于实现百亿亿次级结构的时间同步的方法和装置的实施例在本文中进行描述。在下面的描述中,提出了大量特定细节以提供对本发明的各实施例的彻底理解。然而,本领域技术人员将认识到,本发明可在没有特定细节中的一个或多个的情况下实施,或者与其他方法、组件、材料等一起实施。在其他实例中,公知的结构、材料或操作并没有具体示出或者描述以避免模糊本发明的各方面。
贯穿本说明书的对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性被包含在本发明的至少一个实施例中。因此,贯穿本说明书在多处出现的短语“在一个实施例中”或“在实施例中”并不必须所有都指相同的实施例。此外,在一个或多个实施例中,该特定特征、结构或特性可能以任何适当的方式进行组合。
为了清晰起见,在本文中,附图中的独立组件还可能通过附图中它们的标签进行引用,而不是通过特定的附图标记。此外,指示特定类型的组件(与特定组件相反)的附图标记可能被示出为后面跟着表示“典型的”的“(typ)”的附图标记。将理解,这些组件的配置将为典型的可能存在但为了简洁和清晰没有在附图中示出的相似组件,或否则没有使用独立的附图标记进行标示的相似组件。相反地,“(typ)”并不解释为表示该组件、元素等典型地用于它的公开的功能、实现、目的等。
依据本文描述的各实施例的各方面,提供了一种促进百亿亿次级结构的非常精确的时间同步的机制。在示例性实施例中,该结构支持链路层(第2层)固有的可靠性而无需在更高层的端对端确认,诸如由以太网的TCP所使用的。为了更好地理解如何实现该机制,首先讨论百亿亿次级结构,然后为时间同步机制的详细描述。
依据百亿亿次级结构的各方面,提供了定义消息传递、交换、服务器互连网络的架构。该架构跨越OSI网络模型第1层和第2层,利用第3层的IETF因特网协议,并包括该架构的第4层的新的和利用的规范的组合。
该架构可能被实施以互连CPU和包括逻辑消息传递配置的其他子系统,或者通过正式的定义,诸如超级计算机,或者简单地通过关联,诸如归因于它们运行的消息传递应用而以某种协调的方式起作用的服务器的组或集群,正如通常为云计算的情况。该互连的组件被称为节点。该架构还可能被实施以将处理器节点与SoC、多芯片模块等互连。一种类型的节点,称为主机,是其上执行用户模式的软件的类型。在一个实施例中,主机包括单个超高速缓存一致的存储器域,不考虑该一致的域中的核心或CPU的数量,并可以包括各种本地I/O和存储子系统。主机运行的软件的类型可以定义更特定的功能,诸如用户应用节点,或者存储器或文件服务器,以及服务器以用于描述更具体的系统架构。
在顶层,该架构定义下述组件:
主机结构接口(HFI);
连接;
交换机;
网关;以及
综合管理模型。
主机结构接口(HFI)最少由实现该架构的物理层和链路层的逻辑组成,使得节点可附连至结构并发送和接收数据包至其他服务器或设备。HFI包括用于操作系统和VMM(虚拟机管理器)支持的适当的硬件接口和驱动器。HFI还可以包括用于执行或加速传输协议的上层协议和/或卸载专用逻辑。HFI还包括响应来自于网络管理组件的消息的逻辑。每一个主机经由HFI连接至该架构结构。
链路是将HFI连接至交换机、连接交换机至其他交换机或者连接交换机至网关的全双工、点对点的互连。链路在电路板迹线、铜线电缆或者光缆中可能具有不同的物理配置。在一个实施例中PHY(物理层)、电缆和连接器的实施策略的实现遵循以太网的那些实施策略,特别是100GbE(每秒100千兆比特以太网),诸如以IEEE 802.3bj-2014标准定义的以太网链路。该架构是灵活的,支持可能超过100GbE带宽的未来以太网或其他链路技术的使用。高端超级计算机产品可能使用专用(更高带宽)PHY,并且对于那些配置,与架构产品的互操作性将基于与具有不同PHY的端口的交换。
图1显示出根据一个实施例的示出了该架构的各种组件和互连的系统100的高层次视图。该架构的中心特征是结构102,它包括经由该架构的链路和交换机互连的HFI和网关的集合。如图1所绘,结构102组件包括多个HFI 104(示出了一个),每一个HFI 104由各自的分立的单个节点平台106托管,由虚拟平台110托管的HFI 108、由多节点平台116的各自节点1141和114n托管的HFI 1121和112n、以及集成的单个节点平台120的HFI 1181和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,或者flit,流控制数字的近似缩写)。图3示出了组成为束(bundle)302的多个flit 300的示例。每一个flit 300包括含有8字节数据的64个数据比特。
链路传输子层将多个通道形成为能够以可靠的方式跨越该链路传输flit以及它们的相关联的信用返回信息的组。这使用称为链路传输数据包(LTP)的1056比特的束完成,链路传输数据包与链路结构子层相关联。图3还描述了LTP的数据部分,它包括16个flit的数据。此外,LTP包括flit类型的信息、CRC数据以及可选数据(未在图3中示出)。在多幅附图(例如,图5-图8)中示出了并在下文更进一步详细描述LTP的示例。
结构数据包由64比特的flit和用于每一个flit的flit类型的比特组成。结构数据包的第一数据flit被称为头(Head)flit。结构数据包的最后数据flit被称为尾(Tail)flit。在结构数据包中的任意其他数据flit被称为体(body flit)。结构数据包400的示例在图4中示出。
该flit类型比特被提供给每一个flit以区分体flit与其他flit类型。在一个实施例中,体flit被编码为该flit类型比特设置为1,并包括64比特的数据。所有其他flit被标记为该类型比特设置为0。头flit被编码为flit[63]设置为1。所有其他(非体)flit被编码为flit[63]设置为0。尾flit被编码为flit[62]设置为1。所有其他(非体/头)flit被编码为flit[62]设置为0。Flit编码被总结在下面的表1中。
表1
控制flit被总结在表2中。由链路传输层单独使用的七个控制flit(LT控制Flit)以空(null)LTP发送。剩余的控制flit被划分为两个组。结构数据包(FP)flit包括头坏数据包(HeadBadPkt)控制flit、体坏数据包(BodyBadPkt)控制flit和尾坏数据包(TailBadPkt)控制flit以及正常数据包头flit、体flit和尾flit。链路结构(LF)命令flit包括空闲(Idle)flit、VLMrkr flit和CrdtRet flit。FPflit和LF命令flit可以在可靠LTP中混合在一起以通过该链路传输。
表2
当没有要插入该数据流的结构数据包flit时该链路结构层使用空闲命令flit。如果该数据路径的全部宽度包含空闲,那么该链路传输层将从被插入到输入缓冲器的flit流中移除它们。如果该数据路径包含空闲flit和非空闲flit两者,那么该空闲将不被移除。实现这种方式用于链路传输层以向该链路远端的链路结构层呈现相同的数据路径组成。如果该链路传输层没有从链路结构层挂起的flit,则它将插入空闲因为原始flit通过该链路发送。原始flit是通过该链路首次发送的flit,与从包括重新发送的或重传的flit的重传缓冲器发送的那些相反。
链路传输数据包持有16个flit以通过该链路发送。可靠LTP被保持在重传缓冲器中一段足够长的时间以保证重新发送请求的缺少指示它已经被该链路对等(peer)成功接收。重传缓冲器位置指针针对发送器(NxtTxLTP)和接收器(NxtRxLTP)处的每一个LTP被维持,但并不作为LTP的一部分被交换。当由接收器检测到传输错误时,它发送RetryReqLTP至包含NxtRxLTP重传缓冲器位置指针的发送器。响应于接收到RetryReqLTP,在重传缓冲器中的LTP被以原始顺序重新发送,开始为RetryReqLTP(对等NxtRxLTP)并且结束为最后重传缓冲器位置写入(NxtWrLTP-1)。空LTP并不保持在重传缓冲器中并且并不被重新发送。
链路结构命令flit可能与FP flit在LTP中混合;然而,LF命令flit不是结构数据包的一部分。它们承载从位于链路一端的链路结构子层至位于该链路另一端的链路结构子层的控制信息。
在一个实施例中,存在三个LTP格式,包括标准检测LTP、14比特CRC LTP,以及增强检测LTP。标准检测LTP的实施例在图5中示出。除了16个flit每一个标准检测LTP具有16比特的CRC,它覆盖了该LTP内容。为了说明的目的,图5中的Flit被示出为65个比特,其中比特64是flit类型的比特。
14比特CRC LTP的实施例在图6中示出。除了该16个flit,每一个14比特CRC LTP具有两比特信用边带信道以及覆盖LTP内容的14比特CRC。在LTP内或者以特定LF命令flit或者以LTP信用边带信道来发送流控制信用。
除了标准检测LTP,该链路还可以支持持有十六个flit并具有四个十二比特CRC字段的可选的增强检测LTP。图7示出了增强的检测LTP的实施例的格式。四个CRC字段的每一个覆盖所有十六个flit。如果四个CRC中的任意一个是坏的,那么该LTP被重新发送。对于该四个12比特CRC来说,存在两个CRC计算选项。第一个(48b重叠)使用四次重叠计算,其中每次计算覆盖LTP内的所有比特。第二个(每一个通道12b-16b CRC)使用四次非重叠计算,其中每次计算被限制为在四个通道的其中一个上流动的所有比特。
如上文讨论的,由链路传输层使用的LT控制Flit在空LTP中发送。空LTP并不消耗重传缓冲器中的空间并且并不被重新发送。它们使用上文表2中总结的链路传输LT控制flit的其中一个进行区分。大多数空LTP类型以顺序对的方式发送以保证在无错的情况下两个中的其中至少一个由该链路对等接收或者当它们两者都具有错误时将自动生成RetrainRetryReq。在图8中示出了标准检测空LTP的示例。
标准检测空LTP包含单个区分控制flit,975个保留比特以及标准检测十六个比特的CRC字段。增强检测空LTP包含单个区分控制flit,975个保留比特和增强的检测四个12比特CRC字段。当使用14比特CRC时,在空LTP中忽略这两个边带比特。
如上文所讨论的,该架构使用三层数据单元粒度以支持数据传输:结构数据包、flit和链路传输数据包。在链路传输层的发送单元是LTP。正如所描绘的,每一个LTP名义上为16flit长,并且如上文所述LTP的真实大小可能取决于使用的特定CRC方案而改变,并且参考具有16flit长度的LTP的使用对应于包含在排除CRC比特和该16比特65的该LTP中的64比特flit的数据的数量。
在图9中示出了包括四个物理通道的链路的一个实施例的物理层(还称为“PHY”)结构。该PHY定义了链路互连的物理结构并且负责处理两个链路对等之间的特定链路上的信号的操作细节,例如由组件A和B所描绘的。物理层管理信号线上的数据传输,包括在跨越该并行通道发送和接收信息的每一个比特中涉及的电平、时间方面以及逻辑事务。如图9所示,每一个互连链路的物理连接由四个差分信号对900组成,包括每一个方向上的通道0-3。每一个端口支持由两个单向链路组成的链路对以完成两个对等组件之间的连接。这支持双向同时业务。
具有链路端口的组件使用被定义为链路对等的单向点对点链路对来进行通信,如图9中所示。每一个端口包括发送(Tx)链路接口和接收(Rx)链路接口。对于示出的示例,组件A具有连接至组件B Rx端口904的Tx端口902。同时,组件B具有连接至组件B Rx端口908的Tx端口904。一个单向链路从组件A发送至组件B,并且另一链路从组件B发送至组件A。该“发送”链路和“接收”链路相对于哪个组件端口在发送以及哪个在接收数据而定义。在图9示出的配置中,组件A发送链路将数据从组件A Tx端口902发送至组件B Rx端口904。此相同的组件A发送链路是端口B接收链路。
如前面所述,用于在链路端口间传输数据的基础单元是LTP。每一个LTP对于通过由发送端口以及位于链路对端的接收端口定义的特定链路在一个方向上的传输是特定的。LTP具有单个链路传输的寿命,并且LTP通过从可用VL缓冲器拉取flit并组装它们,每次16个,成为各自的LTP而动态生成。如LTP传输流910和912所描绘的,LTP被发送为flit流,其中单独LTP的第一flit和最后flit由头flit比特和尾flit比特描绘,如上文参考图4所讨论的。
如上文所讨论的,该架构定义一种数据包递送机制,主要包括目的地-路由的结构数据包,或FP,具有0字节至10240字节大小的第4层有效载荷大小。这为发送从简单ULP确认至封装的以太网巨型帧的一个范围的消息提供了有效支持。结构数据包表示上游至HFI或从HFI下游的载荷的逻辑单元。称为结构数据包是因为它们具有在结构中的端至端的寿命。更特别地,结构数据包的寿命是它在正如由FP的源和目的地地址所定义的结构端点之间传输FP内容所需的时间。FP的每一个传输路径将包括跨越至少一个链路的传输,并可以包括当该传输路径穿过一个或多个交换机时跨越多个链路的传输。
结构时间同步
依据本文描述的各实施例的进一步方面,提供了一种用于以获得其数量级比目前使用IEEE 1588获得的更精确的极高精确等级的方式同步跨越结构的时钟的机制。该技术是固有可扩展的,使得10000或100000个节点的时钟能够与单个主时钟同步。此外,为了更进一步的扩展性可以实现多个主时钟。
存在实施该时间同步机制的多个关键方面。首先是跨越链路的基于flit的信息传输以及在flit流中混合控制flit和数据包flit的能力。主时钟被用于经由使用特殊控制flit(SPC)而不是作为结构数据包来将主时间传播至耦合到该结构的多个终端节点(称为从节点)。这表示当该主时间信息到达交换机的发送端口时,它可以在下一8字节flit边界处被立即注入该链路。无需等待直到当前数据包已经完成发送。这使通过该交换机的传播延迟中的抖动最小化。链路级在出现错误时重试,如果该时间控制flit被重传则会引入显著的抖动。为了避免这一情况,在一个实施例中,如果该时间控制flit由重传事件被延迟,则被简单地丢弃,并且该协议对于丢失的时间更新是能适应的。
在一个实施例中,主时间是64比特的值,而控制Flit仅可承载48比特的载荷。该主时间因此被承载在两个独立的flit中,其中一个承载低40比特并且一个承载较高的(高)32比特,其中8个比特是重叠的。通过承载时间值的重叠部分,端点可确定独立到达的并且其中任一个都可能在途中被丢弃的这两个部分彼此间是否一致。这还可允许时间值的较高部分的被发送的频率远小于时间值的较低部分。
不像传统的交换机,通过交换机对时间值的传播使用独立于用于传播数据包的交叉开关和缓冲器的数据路径。在一个实例中,该数据路径是围绕交换机芯片外围的多个比特宽度的环形总线。作为交换机的时间源,或者作为时钟树中的交换机的上游端口的端口,当时间控制flit到达该端口并将时间值注入该环形总线时将时间值从该时间控制flit中移除。是时钟树中的下游端口的端口当时间值经过时从该环形总线中拷贝时间值并且然后在flit界限处将相应的时间控制flit注入该链路。当该时间值返回至它的源端口时,它被从该环中移除。这提供了从上游端口至每一个下游端口的具有固定、已知延迟的传播路径。
在该时钟树中的每一个目的节点,当时间值到达时,该时间值被从控制flit中捕获,并存储在主时间高(MasterTimeHigh)和主时间低(MasterTimeLow)寄存器中。当承载时间值的低位比特的flit到达时,该节点还捕获在本地时间寄存器中的本地时钟的值。在该节点上执行的软件然后可以读取这些寄存器。在一个实施例中,硬件确保在寄存器中的值在读取多个寄存器的序列期间不发生改变,或者通过使用阴影复制,或者通过禁止读取序列期间的更新。该整个64比特的主时间可根据该两个主时间寄存器进行重建,并且可通过来自主时钟的已知的传播延迟(它可被单独计算)进行调整。这为软件提供了在捕获本地时间时的真实的主时间值,提供了跨越该结构的绝对时间同步。
图10a和图10b示出了根据一个实施例的在其中实现时间同步的示例性的时钟树1000。时钟树1000中的主要组件包括主时钟节点1002、备份主时钟节点1004、交换机1006、1008以及1010,以及从节点1012和1014。还描述了一个或多个结构管理器128,注意示出了两个从而图示的结构管理器和其他组件之间的通信链路并不交叉。一般来说,时钟树可以包括一个或多个备份主时钟节点。
主节点和从节点的每一个包括各自的时钟和HFI 1016。主时钟节点1002包括主时钟1018,备份主时钟节点1004包括主时钟1020,从节点1012包括本地时钟1022,并且从节点1014包括本地时钟1024。从节点1012和1014的每一个进一步包括主时钟高(MasterTimeHigh)寄存器1026,主时钟低(MasterTimeLow)寄存器1028,以及本地时钟寄存器1030。
交换机1006、1008和1010的每一个被相似地配置并且包括多个结构端口1032,它们的部分或全部可能被配置为时钟端口1034。时钟端口与结构端口相似,具有额外的功能以促进主时钟数据的传播,如下文所描述的。为了说明的目的,仅仅四个时钟端口1034(以灰色显示以与其他结构端口区分);然而,将理解任意数量的结构端口1032可以被配置为时钟端口。在本文的附图中该上游时钟端口以灰色描述,而下游时钟端口以黑色描述。
在图11和图11b中示出了交换机1006、1008以及1010的进一步细节。每一个交换机包括环形总线1036和1038(在本文还称为“环”)的对。如所示出的,数据通过环1036以顺时针方向转发,并且通过环1038以逆时针方向转发。每一个环1038都包括多个环停止节点1100,在每一个时钟端口1034提供了一对该节点。
每一个端口1032和时钟端口1034都包括Rx端口1102和Tx端口1104,它们每一个分别耦合到Rx缓冲器1106和Tx缓冲器1108。对于给定的端口,每一个Rx缓冲器1106可选择性地通过用于交叉开关互连1110的逻辑和电路耦合到另一个端口的每一个Tx缓冲器。为了方便和简洁,Rx缓冲器1106、Tx缓冲器1108以及交叉开关互连1110的组合在图10a和图10b中被描述为交换机交叉开关和缓冲器1040。此外,每一个交换机包括转发和路由表1111,它使得该交换机能够执行它的普通结构数据包转发和路由。
在一个实施例中,所有端口是可以被选择性地配置为支持上游和下游时钟端口功能的时钟端口。在一个实施例中,时钟端口1034包括时间控制flit提取逻辑1112和时间控制flit注入逻辑1114,它们每一个都可以在每一个时钟端口由结构管理器选择性地使能以形成时钟树。时间控制flit提取逻辑1112被实施在上游时钟端口的Rx端口1102并被配置为从flit流1116识别和提取时间控制flit。该时间控制flit包括主时间高(MasterTimeHigh)SPC flit 1118和主时间低(MasterTimeLow)SPC flit 1120。如图12所示,主时间高SPCflit 1118包括65比特的flit,其中最低四个字节(字节0-3)被用于存储主时间高时钟值的较高的32比特。如图13所示,主时间低SPC flit 1120包括65比特的flit,其中该最低五个字节(字节0-4)用于存储主时间低时钟值的较低的40比特。因此,如果时间控制flit彼此间一致,则主时间高SPC flit 1118的字节0以及主时间低SPC flit 1120的字节4应当包含相同的值。
在一个实施例中,时间控制flit提取逻辑1112提取主时间低SPC flit的40比特(主时间低数据)或者主时间高SPC flit的32比特(主时间高数据)并将数据(分别)封装在数据包中并在环1036和1038上发送该数据。在另一实施例中,主时间低SPC flit或者主时间高SPC flit自身被封装在该数据包中并在环1036和1038上发送。在每一个环-停止周期中,数据前进至下一环停止节点,最终到达下游时钟端口环停止节点,在该点,时间控制flit注入逻辑1114能够从该环拷贝数据,对40比特的主时间低数据或32比特的主时间高数据(如果可应用的话)进行解封装,生成新的主时间低或主时间高SPC flit,并将该新的flit注入当前正被从与该时间控制flit注入逻辑相关的Tx端口发出的flit流1118中。在封装整个主时间低SPC flit和主时间高SPC flit的实施例中,flit被提取并注入该flit流中而无需生成新的主时间低SPC flit和主时间高SPC flit。如上文所讨论的,这些时间控制flit可以在该flit流的下一8字节边界处被立即注入。
该结构交换机还可以实现本地时钟1116或主时钟1118。在一个实施例中,结构交换机可以被配置为执行主时钟节点的功能,并且位于时钟树的根部。在这种情况下,该结构交换机并不实现上游端口。当该结构交换机在包括单独的主时钟节点的结构中操作时,该交换机的本地时钟1116可以以与从节点相似的方式被同步,正如上文所描述的。
图11b示出了一对时钟端口1134a和1134b的进一步细节,它们被结构管理器分别配置为上游时钟端口和下游时钟端口。每一个接收端口1102包括Rx输入FIFO缓冲器1120,其中来自flit流的flit被缓存。每一个LTP中的CRC值被用于验证LTP中的所有flit是否都被无错地接收。如果不是,则使用一种使得该LTP被从发送方重新发送的可靠机制。在LTP已经被验证为已经被成功接收之后,它被从Rx输入FIFO缓冲器1120推出进入接收缓冲器1106,接收缓冲器1106进一步被标记为“(INQ)”,指示该接收缓冲器用作输入队列。
此外,一旦LTP已经被成功接收,则时间控制flit提取逻辑1112提取该主时间低SPC flit和主时间高SPC flit并将它们沿着旁路电路路径转发,如转发路径1122所描述的。每一个接收端口1102被连接至环形总线1036和1038两者。同时,该结构管理器选择性地配置游时钟端口的每一个Tx端口1104这样被耦合到该环形总线,从而引起当数据从上游时钟端口至下游时钟路径转发时的最小延迟。在示出的示例中,Tx端口1104b被选择性地耦合到环形总线1038。如将观察到的,一对环形总线的使用减少了上游Rx和下游Tx端口对的某些之间的旁路电路长度(与仅使用单个环相比)。在接收到主时间低和主时间高数据(或者flit,如果flit被沿着该旁路电路路径转发)时,相应的flit被插入Tx端口1104上的Tx输出缓冲器1124,并且接下来在该结构上向外发送至该时钟树的下一跳。
存在将对当时间控制flit经过交换机时更新该时间控制flit中的时间值的有用的实施方式。举例来说,如果在通过该交换机传播时间值中存在未预期的延迟,则一种实施方式能够实现该时间值增加该未预期延迟的量而不是传递未改变的时间值。举例来说,如果发送端口在重试序列的中间,则该时间值能够被更新并且然后在该重试完成后被发送。
进一步参考图14的流程图1400,依据一个实施例的本地时钟相对于时钟树1000的主时钟1018的时钟速率不匹配的确定被实施为如下。如外层循环所描述的,以循环的方式执行下述操作,诸如定期的。在块1402中,HFI 1016或者主时钟节点1002(未示出)中的某些其他组件读取主时钟1018并生成主时间高SPC flit 1118和主时间低SPC flit 1120并且将其注入至从HFI的发送(Tx)端口输出的flit流1116。如上文所述,该主时间高SPC flit包含该主时间高数据,它包括64比特时钟数据的较高32比特并且该主时间低SPC flit包含该64比特主时钟数据的较低40比特(主时间低数据)。同样如上文所讨论的,重叠的使用使得低时间高SPC flit和主时间高SPC flit两者的相同的8个比特进行比较以验证该时钟数据是一致的。块1202的结果是将该主时间高SPC flit 1118和主时间低SPC flit 1120注入flit流1116,flit流1116被发送到交换机1106上的上游时钟端口1134a的接收端口,如图10a所示。该主时间高SPC flit和主时间低SPC flit可以被注入该flit流,或者作为有序对或者注入该flit流的无序槽中。如上文所描述的,该主时间高数据的发送并不需要每次传输时钟数据,因为此较高32比特值在短时间内将不会改变。
在主时钟节点和在下述路径中的最后交换机之前的给定从节点之间的整个时钟树路径中的每一个交换机处执行块1404和1406的操作,在这种情况下执行块1408而不是块1406的操作。为了说明的目的,交换机的数量被描述为整数n,其中n可以为一个或多个交换机。如果仅有一个交换机,则块1406的操作被跳过并且并不循环回下一交换机。
在块1404中,在由配置为上游时钟接收端口(例如,图10a和10b中的时钟端口1134a的Rx端口)的时钟端口1134a的接收(Rx)端口接收时,时间控制flit(主时间高SPCflit和主时间低SPC flit)被识别,并且相应的32比特主时间高数据和40比特主时间低数据被提取。该主时间高数据和主时间低数据(如果可应用的话)然后被绕着每一个环1036和1038发送,接下来前进至每一个环停止节点直到完成每一个环的遍历。可选地,该主时间高SPC flit和主时间低SPC flit它们自身被绕着环1036和1038发送。如块1406所示,对于沿着具有作为下一跳的交换机的时钟树路径的每一个交换机,主时间高SPC flit和主时间低SPC flit(如果可应用的话)在被用于将该主时钟数据发送至该时钟树中的下一交换机的下游时钟端口的Tx端口处被注入该flit流。相似的操作在块1208中针对最后的交换机沿着该时钟树路径至目的从节点而不是下一交换机执行。在图10a和图10b中描述的相应下游时钟端口包括交换机1006的下游时钟端口1134b,交换机1008的下游时钟端口1134d和1134e,以及交换机1010的下游时钟端口1134g。
继续在块1410处,在从节点的HFI接收到主时间高SPC flit和主时间低SPC flit时,该主时间高数据和主时间低数据被提取并分别写入主时间高寄存器1026和主时间低寄存器1028。在一个实施例中,这些寄存器的每一个可以存储多个样本主时间高数据和主时间低数据。可选地,每一个寄存器存储单个样本,当所述单个样本被存储在该寄存器中时由软件或固件读取。结合至主时间低寄存器1028的写入,如由从节点上的逻辑所检测的,从节点处的本地时钟的第一样本(例如,从节点1012的本地时钟1022和从节点1014的本地时钟1024)被获取并且相应的本地时间样本被存储在本地时间寄存器1030中。结合至主时间低寄存器1028的后续写入(它将在下一循环中发生),获取本地时钟的第二样本,并且第一本地时钟样本和第二本地时钟样本之间的差被计算为ΔtSlave1212。同时,从主时间高寄存器1026和主时间低寄存器1028中读取主时间高值和主时间低值的各自样本以生成连续的主时钟时间样本以计算ΔtMaster1214。可选地,从第一主时间低值减去第二主时间低值来计算ΔtMaster1214。
然后针对样本之间的给定时间段计算ΔtMaster和ΔtSlave之间的差并除以ΔtSlave以确定主时钟和本地(从)时钟之间的时钟速率不匹配1216。举例来说,在一个实施例中,流程图1200的外层循环被定期重复为接近每秒10次,并且因此该时钟速率不匹配将被测算为十分之一秒(或者使用周期性的任意时间段)。在一个实施例中,本地时间寄存器1030被配置为存储多个本地时钟样本,并且主时钟数据的连续接收之间的差别可被精确计算(低至本地时钟的粒度等级,例如,近似几纳秒)。
除了确定每一个从节点的时钟相对于主节点的时钟的时钟速率不匹配之外,该从节点时钟还与该主时钟同步。用于实现此过程的一个实施例的各操作在图15的流程图1500中示出。如循环开始块1502以及相应的外层循环所示,针对主时钟树中的每一个从节点执行流程图1500的各操作。
如在开始循环块1504和块1506中所描述的,计算时钟树路径中的每一个结构链路段的链路段延迟。在一个实施例中,通过测量通过给定链路段完成往返路径的持续时间并且然后减去由在该链路的两端的处理消耗的时间部分来完成。在一个实施例中,在起始结构端口(例如,交换机上的下游时钟端口)处计算主时钟树中的每一个行程(1eg)分段的延迟,并且获得的计算结果被发送至一个或多个结构管理器,它将该信息存储在链路段延迟表等中,如在块1512中所描述的。从主时钟节点1002到从节点1012的主时钟树路径的链路段的示例集合包括链路段1042、1044和1046,相应的链路段延迟分别被描述为Δt1、Δt3以及Δt5。从主时钟节点1002至从节点1014的主时钟树路径包括链路段1042、1044、1048以及1050,相应的链路段延迟分别被描述为Δt1、Δt3、Δt7以及Δt9。
接下来,如开始循环块1508和块1510所描述的,在沿着主时钟树路径的每一个交换机处计算交换机环形路径延迟。这一计算可以以各种方式执行,包括获取交换机上的环形停止节点之间的延迟时间测量,以及使用用于设计交换机中的电路的建模工具来计算该延迟。一般来说,对于给定的交换机配置,这些测量在将该交换机安装在该结构中之前将仅需要被执行一次(或者多次并取平均)。某些交换机可以被配置为在多于一个的环形时钟频率下操作,并且因此可能需要在每一个支持的环形时钟频率下测试。在确定环形路径延迟计算(或者针对交换机的一组计算)时,相应的环形路径和延迟数据被发送至一个或多个结构管理器,它将该数据存储在环形路径延迟表等中,如块1512所描述的。
在图10a和图10b中,示例性环形路径和延迟测量被示出为针对交换机1006(环形路径1052和延迟Δt2)、交换机1008(环形路径1054和1056以及延迟Δt4和Δt6)以及交换机1010(环形路径1058和延迟Δt8)。将针对每一个交换机中的其他环形路径计算相似的延迟。如前面一样,此信息被发送至结构管理器(例如,结构管理器128),它将该环形路径延迟数据存储在表格等中。
在块1514中,计算从主节点至每一个从节点的给定时钟树路径的链路段延迟和交换机环形路径延迟的总合计,如下所示:
总时钟树路径延迟=∑Δt(链路段)+∑Δt(交换机环形路径)(1)
该结构管理器然后将该时钟树路径延迟发送至每一个从节点,如块1516中所示。在一个实施例中,此信息在从节点上被存储为时钟偏差(ClockOffset),或者在本地时间寄存器1030中或者在单独的时钟偏差寄存器1602中(参见图16,为了清晰起见没有在图10a和图10b中示出)。
图16示出了描述在每一个从节点执行用于同步它的本地时钟与主时钟的操作的图1600。如前面一样,该主时间高数据和主时间低数据在块1210中被提取并且被写至主时间高寄存器1026和主时间低寄存器1028。确定相应的64比特主时钟时间。在一个方面,该主时钟时间在它在主时钟被取样的时刻被考虑为绝对时间值。然后将对应于从主节点至从节点的该总时钟树路径延迟的时钟偏差值加到该主时钟时间以获得在从节点处的绝对时间。该从节点的本地时钟然后被同步至主时钟。给定已知的时钟不匹配率,可以使用各种技术以同步该从时钟至该主时钟,诸如但不限于在IEEE 1588中描述的技术。
图16示出了描述在每一个从节点处执行用于同步它的本地时钟与主时钟的操作的图1600。如前面一样,该主时间高数据和主时间低数据在块1210中被提取并写至主时间高寄存器1026和主时间低寄存器1028。确定相应的64比特主时钟时间。在一个方面,该主时钟时间在它在主时钟被取样的时刻被考虑为绝对时间值。然后将对应于从主节点至从节点的该总时钟树路径延迟的时钟偏差值加上该主时钟时间以获得在从节点处的绝对时间。该从节点的本地时钟然后被同步至该主时钟。给定已知的时钟不匹配率,可以使用各种技术以同步该从时钟至该主时钟,诸如但不限于在IEEE 1588中描述的技术。
在某些环境下,使用另一主时钟节点代替当前的主时钟节点可能是必要的。举例来说,此情况在图10b中示出,其中主时钟节点1002已经故障(或者它不能够支持主时钟操作)并且已经被主时钟备份节点1004代替。(目前的)主时钟节点1004的HFI经由链路段1052连接至交换机1006的上游时钟端口1134a,相应的链路段延迟描述为Δt10。
注意替换主时钟节点不需要像前面的主时钟节点那样连接至相同的交换机。而是,主时钟节点可以被连接至多个结构交换机。此外,当实现了新的主时钟节点时,从主时钟节点至每一个从节点总延迟的时钟树路径的延迟一般将被重新计算。
本文公开的实施例提供了超出现有技术的显著改进。举例来说,该结构时间同步机制和协议比仅仅软件的解决方案提供了更高数量级的精确度。用于以太网的该IEEE1588方法和用于PCIe的PTM方法假定,主时钟信息的传播延迟基于该结构中的拥塞的不同度,在每次发送该信息时都不同。这些协议试图通过发送响应和测量环形旅程延迟来测量真正的传播延迟。这需要在交换机中复杂的逻辑,或者基于固件的协议控制器,以在每跳都实现该计算。
本文描述的该主时钟同步协议使用交换机内的专用旁路数据路径以提供从主时间信息的源至作为定义的时钟树的一部分的所有下游交换机端口的已知的传播延迟(等待时间)。此协议可传递更好的精确度因为从一个主时间样本至另一个的传播延迟的改变更少。
在下面被编号的条款中提出本文描述的主题的进一步方面:
1、一种在环境中执行的方法,所述环境包括经由包括多个结构交换机和多个结构链路的结构通信地耦合到多个从节点的主时钟节点,所述方法包括:
经由具有固定延迟的时钟树路径将由在主时钟节点上操作的主时钟生成的主时钟时间数据转发至多个从节点中的每一个;
对于给定的从节点,确定从主时钟节点至从节点的时钟树路径的固定延迟;以及
使用由从节点接收的主时钟时间数据以及确定的从主时钟节点至从节点的时钟树路径的固定延迟来对从节点的本地时钟和在主时钟节点上操作的主时钟进行同步,
其中,对于从节点的至少一部分,从主时钟节点至那些从节点的时钟树路径遍历多个结构交换机。
2、条款1的方法,其中遍历主时钟节点和从节点之间的给定转发路径的多个结构交换机的每一个包括:
多个端口,每一个包括操作地耦合到接收缓冲器的接收端口以及可操作的耦合到发送缓冲器的发送端口;
交换电路,其在操作期间,实现第一端口的接收缓冲器和第二端口的发送缓冲器之间的可选连接;
上游时钟端口的接收端口和下游时钟端口的发送端口之间的至少一个旁路电路路径,其能够实现在该接收端口接收的数据沿着旁路电路路径被转发至该发送端口。
3、条款2的方法,其中该至少一个电路路径包括接收端口和发送端口的至少一部分可操作地耦合到的环形总线。
4、条款2或3的方法,其中该至少一个电路路径包括接收端口和发送端口的至少一部分可操作地耦合到的第一环形总线和第二环形总线,其中数据对于第一环形总线以顺时针方向转发并且数据对于第二环形总线以逆时针方向转发,并且其中该数据基于哪个环形总线导致最少延迟而沿着第一环形总线和第二环形总线的其中一个转发。
5、在前条款的任一项的方法,其中主时钟节点和从节点之间的时钟树路径遍历多个结构交换机以及将该多个结构交换机通信地链接的多个链路段,并且其中确定时钟树路径的固定延迟包括:
确定该多个链路段的每一个的延迟;
确定在该多个结构交换机的每一个内的从上游时钟端口至下游时钟端口的交换机转发延迟,其中该时钟树路径包括耦合到该上游时钟端口的第一链路段和耦合到该下游时钟端口的第二链路段;以及
聚合该多个链路段的每一个的延迟和交换机转发延迟。
6、在前条款的任一项的方法,其中使用流控制单元(flit)的流跨越该多个结构链路传输数据,并且其中该主时钟时间数据被包含在沿着从主时钟节点至该多个从节点的该时钟树路径转发的至少一个flit内。
7、条款6的方法,其中该主时钟时间数据包含在第一flit和第二flit中,第一flit包括该主时钟时间数据的较高比特部分而第二flit包括该主时钟时间数据的较低比特部分。
8、条款7的方法,其中第一flit中的主时钟时间数据的较高比特部分的一部分与第二flit中的主时钟时间数据的较低比特部分是重叠的,进一步包括比较重叠部分中的主时钟时间数据比特以确定该主时钟时间数据的较高比特部分和较低比特部分是一致的。
9、条款6的方法,进一步包括:
在结构交换机的上游时钟端口的接收端口处接收包括flit的流的flit流,该接收端口具有相关联的接收缓冲器;
检测该flit流中的第一多个flit包含与结构数据包对应的数据;
在接收端口的接收缓冲器中存储第一多个flit;
检测该flit流中的flit对应于包含主时钟时间数据的时间控制flit;
从该时间控制flit提取主时钟时间数据;
将该主时钟时间数据沿着旁路电路路径从该接收端口转发至该结构交换机中的下游时钟端口;
将该主时钟时间数据封装在新的时间控制flit中,所述新的时间控制flit是在下游时钟端口的发送端口处生成的;以及
将该新的时间控制flit注入到从该发送端口向结构链路发出的flit流中;
10、条款6的方法,进一步包括:
在结构交换机的上游时钟端口的接收端口处接收包括flit的流的flit流,该接收端口具有相关联的接收缓冲器;
检测该flit流中的flit对应于包含主时钟时间数据的时间控制flit;
将该时间控制flit从该接收端口转发至该结构交换机中的下游时钟端口而并不将该时间控制flit缓存在与该接收端口相关联的接收缓冲器中;以及
将该时间控制flit注入到从该下游时钟端口的发送端口向结构链路发出的flit流中。
11、条款6的方法,其中,对于每一个从节点,包括该主时钟时间数据的该至少一个flit以确保转发至从节点的主时钟时间数据的数据完整性的方式沿着从主时钟节点至从节点的时钟树路径被转发。
12、在前条款的任一项的方法,进一步包括确定主时钟和从节点上的本地时钟之间的时钟速率不匹配。
13、条款12的方法,其中确定主时钟和本地时钟之间的时钟速率不匹配包括:
在从节点接收第一主时钟时间数据;
在从节点存储对应于第一主时钟时间数据的第一主时钟时间样本;
结合接收该第一主时钟时间数据,在从节点存储该本地时钟的第一样本;
在从节点接收第二主时钟时间数据;
在从节点存储该第二主时钟时间数据;
结合接收该第二主时钟时间数据,在从节点存储该本地时钟的第二样本;
从第二主时钟时间数据减去第一主时钟时间数据以获得主时钟时间样本差;
从本地时钟的第二样本减去第一样本以获得本地时钟时间样本差的时间差;以及
从主时钟时间样本差减去该本地时钟时间样本差并将该结果除以本地时钟时间样本差以获得该时钟速率不匹配。
14、在前条款的任一项的方法,进一步包括:
使用新的主时钟节点来代替主时钟节点;以及
经由具有固定延迟的时钟树路径将由在该新的主时钟节点上操作的主时钟生成的主时钟时间数据转发至多个从节点的每一个;
对于给定的从节点,确定从该新的主时钟节点至该从节点的时钟树路径的固定延迟;以及
使用由该从节点接收的主时钟时间数据和确定的从主时钟节点至从节点的时钟树路径的固定延迟来对该从节点的本地时钟和在该新的主时钟节点处的主时钟进行同步。
15、在前条款的任一项的方法,进一步包括在结构交换机中实现该主时钟。
16、一种结构交换机,包括:
多个端口,每一个包括可操作地耦合到接收缓冲器的接收端口以及可操作地耦合到发送缓冲器的发送端口,至少一个端口包括上游时钟端口并且至少一个端口包括下游时钟端口;
交换电路,其在操作期间,实现第一端口的接收缓冲器和第二端口的发送缓冲器之间的可选连接;
上游时钟端口的接收端口和下游时钟端口的发送端口之间的至少一个旁路电路路径,其以旁路掉接收端口的接收缓冲器以及发送端口的发送缓冲器的方式能够实现在上游时钟端口的接收端口处接收的主时钟时间数据被转发至下游时钟端口的发送端口。
17、条款16的结构交换机,其中该至少一个电路路径包括具有多个环形节点停止的至少一个环形总线,所述至少一个环形总线包括可操作地耦合到至少一个上游时钟端口的每一个和至少一个下游时钟端口的每一个的各自的环形节点停止。
18、条款17的结构交换机,其中该结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,并且该结构交换机进一步被配置为:
在上游时钟端口接收flit流;
在该flit流中检测时间控制flit;
从该时间控制flit中提取主时钟时间数据;
将该主时钟时间数据沿着第一环形总线转发;以及
在第一互连上的多个环形停止节点的每一个处;
将主时钟时间数据的副本封装在新的时间控制flit中;以及
将该新的时间控制flit注入从该环形停止节点耦合的下游时钟端口向结构链路发出的flit流中。
19、条款17或18的结构交换机,其中该结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,并且该结构交换机进一步被配置为:
在上游时钟端口接收flit流;
在该flit流中检测时间控制flit;
将该时间控制flit沿着第一环形总线转发;以及
在第一互连上的多个环形停止节点的每一个处;
将该时间控制flit的副本注入从该环形停止节点耦合的下游时钟端口向结构链路发出的flit流中。
20、条款17-19的任一项的结构交换机,其中该结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,其中该主时钟时间数据被包含在第一flit和第二flit中,第一flit包括该主时钟时间数据的较高比特部分并且第二flit包括该主时钟时间数据的较低比特部分。
21、条款20的结构交换机,其中每一个上游时钟端口被配置为检测该flit流中的错误并且该结构交换机配置为防止将错误的时间控制flit从上游时钟端口转发至下游时钟端口。
22、条款16-21的任一项的结构交换机,其中该至少一个电路路径包括第一环形总线和第二环形总线,每一个具有多个环形节点停止,其包括可操作地耦合到至少一个上游时钟端口的每一个和至少一个下游时钟端口的每一个的各自环形节点停止,其中数据沿着第一环形总线以顺时针方向被转发并且数据沿着第二环形总线以逆时针方向被转发。
23、条款16-22的任一项的结构交换机,其中该多个端口的每一个选择地可配置为操作为上游时钟端口和下游时钟端口,每次一个。
24、条款16-23的任一项的结构交换机,进一步包括用于实现主时钟的电路。
25、条款16-24的任一项的结构交换机,进一步包括用于实现本地时钟并将该本地时钟同步至主时钟的电路。
26、条款16-24的任一项的结构交换机,其中该结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,该结构交换机进一步包括:
在至少一个上游时钟端口的每一个处的时间控制flit提取逻辑,其被配置为从包括主时钟时间数据的接收的flit流提取时间控制flit并沿着在上游时钟端口和至少一个下游时钟端口之间的旁路电路路径转发包含在提取的时间控制flit中的主时间数据。
27、条款26的结构交换机,进一步包括:
在至少一个下游时钟端口的每一个处的时间控制flit注入逻辑,其被配置为接收沿着该旁路电路路径从上游时钟端口转发的主时间数据,生成新的时间控制flit,并将该新的时间控制flit注入至从该下游时钟端口向结构链路发出的flit流中。
28、条款16-24的任一项的结构交换机,其中该结构交换机配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,该结构交换机进一步包括:
位于至少一个上游时钟端口的每一个处的时间控制flit提取逻辑,其被配置为从包括主时钟时间数据的接收的flit流提取时间控制flit并沿着该上游时钟端口和至少一个下游时钟端口之间的旁路电路路径转发提取的时间控制flit。
29、条款28的结构交换机,进一步包括:
位于至少一个下游时钟端口的每一个处的时间控制flit注入逻辑,其被配置为接收沿着该旁路电路路径从上游时钟端口转发的时间控制flit,并将该时间控制flit注入至从该下游时钟端口向结构链路发出的flit流中。
30、一种系统,包括:
具有主时钟并包括主机结构接口(HFI)的主时钟节点;
多个从节点,每一个包括本地时钟并包括HFI;
多个结构交换机,每一个包括,
多个端口,每一个包括可操作地耦合到接收缓冲器的接收端口和可操作地耦合到发送缓冲器的发送端口,至少一个端口包括上游时钟端口并且至少一个端口包括下游时钟端口;
交换电路,其在操作期间,实现不同端口的接收缓冲器和发送缓冲器对之间的可选连接;
在该至少一个上游时钟端口和该至少一个下游时钟端口之间的至少一个旁路电路路径;以及
该多个结构交换机、该主时钟节点以及该多个从节点上的多个结构链路互连端口,
其中,在该系统的操作期间,该主时钟节点生成经由具有固定延迟的时钟树路径而被转发至从节点的每一个的主时钟时间数据,其中时钟树路径遍历至少一个结构交换机和多个结构链路每一个的旁路电路路径。
31、条款30的系统,其中每一个结构交换机被配置为以旁路掉接收缓冲器、发送缓冲器以及交换电路的方式沿着至少一个旁路电路路径转发主时钟时间数据。
32、条款31的系统,其中该系统执行用于促进从节点上的本地时钟与主时钟的同步的操作,所述操作包括:
经由具有固定延迟的各自时钟树路径将由主时钟生成的主时钟时间数据转发至该多个从节点的每一个;
对于每一个从节点,确定从主时钟节点至从节点的时钟树路径的固定延迟;以及
使用由从节点接收的主时钟时间数据和确定的从主时钟节点至从节点的时钟树路径的固定延迟来对该从节点的本地时钟和在主时钟节点上操作的主时钟进行同步,
33、条款32的系统,其中该系统进一步被配置为:
确定每一个从节点上的本地时钟相对于主时钟的时钟速率不匹配;以及
使用针对每一个本地时钟确定的时钟速率不匹配来维持主时钟和每一个本地时钟之间的同步。
34、条款30-33的任一项的系统,其中该系统进一步被配置为确保转发至每一个从节点的主时钟时间数据的数据完整性。
虽然参考特定实施方式已经描述了某些实施例,但是根据某些实施例其他实施方式也是可能的。此外,在附图中示出的和/或在本文描述的元素或其他特征的布置和/或顺序无需以示出和描述的特定方式来进行布置。根据某些实施例很多其他布置是可能的。
在图中示出的每一个系统中,在某些情况下的元素可能每一个具有相同的附图标记或不同的附图标记以暗示所表示的该元素可能不同和/或相似。然而,元素可以足够灵活以具有不同的实施方式并与本文示出或描述的部分或全部系统协作。图中示出的各种元素可能相同或不同。哪个元素被称为第一元素以及哪个元素被称为第二元素是任意的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”,以及它们的衍生词。应当理解,这些术语并不意欲作为彼此的同义词。而是,在特定实施例中,“连接”可以用于指示两个或更多个元素彼此直接物理或电接触。“耦合”可以表示两个或更多个元素直接物理或电接触。然而“耦合”也可以表示两个或更多多个元素彼此并不直接接触,但仍然彼此协作或交互。
实施例是本发明的实施方式或示例。说明书中对于“实施例”、“一个实施例”、“某些实施例”或“其他实施例”的引用表示与实施例相关描述的特定特征、结构或特性包含在本发明的至少某些实施例中,而并不必须在所有实施例中。“实施例”、“一个实施例”或者“某些实施例”的各种出现并不必须全都指示相同的实施例。
并非本文描述和示出的所有组件、特征、结构、特性等都需要包含在特定的一个或多个实施例中。举例来说,如果说明书声明了“可”、“可能”、“能”、“能够”包括组件、特征、结构或特性,那么并不需要包括该特定组件、特征、结构或特性。如果说明书或权利要求涉及“一”或“一个”元素,那并不表示仅有一个该元素。如果说明书或权利要求涉及“额外的”元素,那并不排除存在多于一个的该额外元素。
在本文中并且一般地算法被认为是引起期望结果的行为或操作的自相一致的序列。这些包括物理量的物理操纵。通常,但不是必须的,这些量采用能够被存储、传输、组合、比较以及其他操纵的电或磁信号的形式。它已经被证明是方便的,主要由于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、术语、数字等。然而,应当理解,全部这些和相似的术语将关联于适当的物理量并仅仅是应用至这些量的便利标签。
如上文所讨论的,可以通过相应的软件和/或固件组件和应用(例如,由嵌入式处理器等执行的软件和/或固件)促进本文各实施例的各种方面。因此,本发明的各实施例可以被用作或支持软件程序、软件模块、固件和/或基于某种形式的处理器、处理核心或嵌入式逻辑执行的分布式软件、运行在处理器或核心或否则基于或在计算机可读或机器可读非暂时性存储介质内实施或实现的虚拟机。计算机可读或机器可读非暂时性存储介质包括以由机器(例如,计算机)可读的形式存储或传输信息的任意机制。例如,计算机可读或机器可读非暂时性存储介质包括以由计算机或计算机器(例如,计算设备,电子系统等)可访问的方式提供(即,存储和/或发送)信息的任意机制,诸如可记录/不可记录的介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。内容可以是可直接执行的(“对象”或“可执行”形式)、源代码或不同的代码(“三角(delta)”或“插入(patch)”码)。计算机可读或机器可读非暂时性存储介质还可以包括可从中下载内容的存储器或数据库。该计算机可读或机器可读非暂时性存储介质还可以包括在销售或交付时将内容存储于其上的设备或制品。因此,交付具有存储的内容的设备,或者提供通过通信介质下载的内容可以被理解为提供一种包括具有本文描述的这种内容的计算机可读或机器可读非暂时性存储介质的制造物。
本文描述的上面称为过程、服务器或工具的各种组件可以为用于执行描述的各功能的单元。由本文描述的各种组件执行的操作和功能可以经由嵌入的硬件等,或者硬件或软件的任意组合由运行在处理元件上的软件实施。这种组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、ASIC、DSP等)、嵌入式控制器、硬接线电路、硬件逻辑等。可以经由包括计算机可读或机器可读非暂时性存储介质的制造物来提供软件内容(例如,数据、指令、配置信息等),所述计算机可读或机器可读非暂时性存储介质提供表示可被执行的指令的内容。该内容可以引起计算机执行本文描述的各种功能/操作。
如上文所使用的,加入了术语“至少一个”的项目的列表可以表示所列出的项目的任意组合。举例来说,术语“A、B或C的至少一个”可表示A;B;C;A和B;A和C;B和C;或者A,B和C。
上文对本发明的所示各实施例的描述,包括在摘要中所描述的,并不意欲穷举本发明或者将本发明限制为所公开的精确形式。虽然以说明为目的在本文描述了本发明的各特定实施例和示例,但在本发明的范围内可能有各种等价的修改,正如相关领域的技术人员将认识到的。
可以根据上文详述的描述对本发明作出这些修改。在下述权利要求中使用的术语不应当被解释为将本发明限制为在说明书和附图中公开的特定实施例。而是,本发明的范围将全部由下述权利要求确定,下述权利要求将依据权利范围解读的创建原则进行解释。
Claims (25)
1.一种在如下的环境中执行的方法,所述环境包括经由包括多个结构交换机和多个结构链路的结构通信地耦合到多个从节点的主时钟节点,所述方法包括:
经由具有固定延迟的时钟树路径将由在所述主时钟节点上操作的主时钟生成的主时钟时间数据转发至所述多个从节点中的每一个从节点;
对于给定的从节点,确定从所述主时钟节点至所述从节点的所述时钟树路径的所述固定延迟;以及
使用由所述从节点接收的所述主时钟时间数据以及被确定的从所述主时钟节点至所述从节点的所述时钟树路径的所述固定延迟来对所述从节点的本地时钟和在所述主时钟节点上操作的所述主时钟进行同步,
其中,对于所述从节点的至少一部分从节点,从所述主时钟节点至那些从节点的时钟树路径遍历多个结构交换机。
2.如权利要求1所述的方法,其中,遍历所述主时钟节点和从节点之间的给定转发路径的多个结构交换机中的每一个结构交换机包括:
多个端口,每一个端口包括能够操作地耦合到接收缓冲器的接收端口以及能够操作地耦合到发送缓冲器的发送端口;
交换电路,其在操作期间,能够实现第一端口的接收缓冲器和第二端口的发送缓冲器之间的能够选择的连接;
上游时钟端口的接收端口和下游时钟端口的发送端口之间的至少一个旁路电路路径,其能够实现在所述接收端口处接收的数据沿着旁路电路路径被转发至所述发送端口。
3.如权利要求2所述的方法,其中,至少一个电路路径包括能够操作地被耦合到所述接收端口和所述发送端口中的至少一部分的环形总线。
4.如权利要求2或3所述的方法,其中,所述至少一个电路路径包括能够操作地被耦合到所述接收端口和所述发送端口中的至少一部分的第一环形总线和第二环形总线,其中,数据对于所述第一环形总线以顺时针方向被转发并且数据对于所述第二环形总线以逆时针方向被转发,并且其中,所述数据基于哪个环形总线引起最少延迟而沿着所述第一环形总线和所述第二环形总线中的一个而被转发。
5.如前述权利要求中的任一项所述的方法,其中,主时钟节点和从节点之间的时钟树路径遍历多个结构交换机和将所述多个结构交换机通信地链接的多个链路段,并且其中,确定时钟树路径的所述固定延迟包括:
确定所述多个链路段中的每一个链路段的延迟;
确定在所述多个结构交换机中的每一个结构交换机内的从上游时钟端口至下游时钟端口的交换机转发延迟,其中,所述时钟树路径包括耦合到所述上游时钟端口的第一链路段和耦合到所述下游时钟端口的第二链路段;以及
聚合所述多个链路段中的每一个链路段的延迟和所述交换机转发延迟。
6.如前述权利要求中的任一项所述的方法,其中,数据是使用流控制单元(flit)的流来跨越所述多个结构链路而被传输的,并且其中,所述主时钟时间数据被包含在沿着从所述主时钟节点至所述多个从节点的所述时钟树路径而被转发的至少一个flit内。
7.如权利要求6所述的方法,其中,所述主时钟时间数据被包含在第一flit和第二flit中,所述第一flit包括所述主时钟时间数据的较高比特部分并且所述第二flit包括所述主时钟时间数据的较低比特部分。
8.如权利要求7所述的方法,其中,所述第一flit中的所述主时钟时间数据的较高比特部分的一部分与所述第二flit中的所述主时钟时间数据的较低比特部分是重叠的,所述方法进一步包括比较重叠部分中的所述主时钟时间数据比特以确定所述主时钟时间数据的所述较高比特部分和所述较低比特部分是一致的。
9.如权利要求6所述的方法,进一步包括:
在结构交换机的上游时钟端口的接收端口处接收包括flit的流的flit流,所述接收端口具有相关联的接收缓冲器;
检测所述flit流中的第一多个flit包含与结构数据包相对应的数据;
将所述第一多个flit存储在所述接收端口的接收缓冲器中;
检测所述flit流中的flit与包含主时钟时间数据的时间控制flit相对应;
从所述时间控制flit中提取所述主时钟时间数据;
将所述主时钟时间数据沿着旁路电路路径从所述接收端口转发至所述结构交换机中的下游时钟端口;
将所述主时钟时间数据封装在新的时间控制flit中,所述新的时间控制flit是在所述下游时钟端口的发送端口处生成的;以及
将所述新时间控制flit注入到从所述发送端口向结构链路发出的flit流中。
10.如权利要求6所述的方法,进一步包括:
在结构交换机的上游时钟端口的接收端口处接收包括flit的流的flit流,所述接收端口具有相关联的接收缓冲器;
检测在所述flit流中的flit与包含主时钟时间数据的时间控制flit相对应;
将所述时间控制flit从所述接收端口转发至所述结构交换机中的下游时钟端口而并不将所述时间控制flit缓存在与所述接收端口相关联的所述接收缓冲器中;以及
将所述时间控制flit注入到从所述下游时钟端口的发送端口向结构链路发出的flit流中。
11.如权利要求6所述的方法,其中,对于每一个从节点,包含所述主时钟时间数据的所述至少一个flit以确保被转发至所述从节点的所述主时钟时间数据的数据完整性的方式沿着从所述主时钟节点至所述从节点的时钟树路径被转发。
12.如前述权利要求中的任一项所述的方法,进一步包括确定所述主时钟和从节点上的本地时钟之间的时钟速率不匹配。
13.如权利要求12所述的方法,其中,确定所述主时钟和所述本地时钟之间的所述时钟速率不匹配包括:
在所述从节点处接收第一主时钟时间数据;
在所述从节点处存储与所述第一主时钟时间数据相对应的第一主时钟时间样本;
结合接收所述第一主时钟时间数据,在所述从节点处存储所述本地时钟的第一样本;
在所述从节点处接收第二主时钟时间数据;
在所述从节点处存储所述第二主时钟时间数据;
结合接收所述第二主时钟时间数据,在所述从节点处存储所述本地时钟的第二样本;
从所述第二主时钟时间数据减去所述第一主时钟时间数据以获得主时钟时间样本差;
从所述本地时钟的第二样本减去所述第一样本以获得所述本地时钟时间样本差的时间差;以及
从所述主时钟时间样本差减去所述本地时钟时间样本差,并且将结果除以所述本地时钟时间样本差以获得所述时钟速率不匹配。
14.如前述权利要求中的任一项所述的方法,进一步包括:
利用新的主时钟节点来代替主时钟节点;以及
经由具有固定延迟的时钟树路径将由在所述新的主时钟节点上操作的主时钟生成的主时钟时间数据转发至所述多个从节点中的每一个从节点;
对于给定的从节点,确定从所述新的主时钟节点至所述从节点的所述时钟树路径的所述固定延迟;以及
使用由所述从节点接收的所述主时钟时间数据和被确定的从所述主时钟节点至所述从节点的所述时钟树路径的所述固定延迟来对所述从节点的本地时钟和在所述新的主时钟节点处的所述主时钟进行同步。
15.一种结构交换机,包括:
多个端口,每一个端口包括能够操作地耦合到接收缓冲器的接收端口以及能够操作地耦合到发送缓冲器的发送端口,至少一个端口包括上游时钟端口,并且至少一个端口包括下游时钟端口;
交换电路,其在操作期间,能够实现第一端口的接收缓冲器和第二端口的发送缓冲器之间的能够选择的连接;
在上游时钟端口的接收端口和下游时钟端口的发送端口之间的至少一个旁路电路路径,其以旁路掉所述接收端口的接收缓冲器以及所述发送端口的发送缓冲器的方式能够实现在所述上游时钟端口的接收端口处接收的主时钟时间数据被转发至所述下游时钟端口的发送端口。
16.如权利要求15所述的结构交换机,其中,至少一个电路路径包括具有多个环形节点停止的至少一个环形总线,所述多个环形节点停止包括能够操作地耦合到至少一个上游时钟端口中的每一个上游时钟端口和至少一个下游时钟端口中的每一个下游时钟端口的各自的环形节点停止。
17.如权利要求16所述的结构交换机,其中,所述结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,并且所述结构交换机进一步被配置为:
在上游时钟端口处接收flit流;
在所述flit流中检测时间控制flit;
从所述时间控制flit中提取主时钟时间数据;
将所述主时钟时间数据沿着第一环形总线转发;以及
在第一互连上的多个环形停止节点中的每一个环形停止节点处;
将所述主时钟时间数据的副本封装在新的时间控制flit中;以及
将所述新的时间控制flit注入到从所述环形停止节点耦合的所述下游时钟端口向结构链路发出的flit流中。
18.如权利要求16或17所述的结构交换机,其中,所述结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,并且所述结构交换机进一步被配置为:
在上游时钟端口处接收flit流;
在所述flit流中检测时间控制flit;
沿着第一环形总线转发所述时间控制flit;以及
在所述第一互连上的每一个环形停止节点处;
将所述时间控制flit的副本注入到从所述环形停止节点耦合的下游时钟端口向结构链路发出的flit流中。
19.如权利要求15-18中的任一项所述的结构交换机,其中,所述至少一个电路路径包括第一环形总线和第二环形总线,其中的每一个都具有多个环形节点停止,所述多个环形节点停止包括能够操作地耦合到至少一个上游时钟端口中的每一个上游时钟端口和至少一个下游时钟端口中的每一个下游时钟端口的各自的环形节点停止,其中,数据以顺时针方向沿着所述第一环形总线被转发并且数据以逆时针方向沿着所述第二环形总线被转发。
20.如权利要求15-19中的任一项所述的结构交换机,其中,所述结构交换机被配置为在将数据在包括流控制单元(flit)流的flit的流中沿着结构链路进行传输的结构中实现,所述结构交换机还包括:
在所述至少一个上游时钟端口中的每一个上游时钟端口处的时间控制flit提取逻辑,其被配置为从包括主时钟时间数据的接收的flit流中提取时间控制flit,并且沿着所述上游时钟端口和至少一个下游时钟端口之间的旁路电路路径转发a)提取的时间控制flit或者b)包含在提取的时间控制flit中的主时间数据中的一个。
21.如权利要求20所述的结构交换机,进一步包括:
在所述至少一个下游时钟端口中的每一个下游时钟端口处的时间控制flit注入逻辑,其被配置为以下操作的至少一个:
a)接收沿着所述旁路电路路径从上游时钟端口转发的主时间数据,生成新的时间控制flit,并且将所述新的时间控制flit注入至从所述下游时钟端口向结构链路发出的flit流中;以及
b)接收沿着所述旁路电路路径从上游时钟端口转发的时间控制flit,并且将所述时间控制flit注入至从所述下游时钟端口向结构链路发出的flit流中。
22.一种系统,包括:
具有主时钟并且包括主机结构接口(HFI)的主时钟节点;
多个从节点,每一个从节点包括本地时钟并且包括HFI;
多个结构交换机,每一个结构交换机包括,
多个端口,每一个端口包括能够操作地耦合到接收缓冲器的接收端口和能够操作地耦合到发送缓冲器的发送端口,至少一个端口包括上游时钟端口并且至少一个端口包括下游时钟端口;
交换电路,其在操作期间,能够实现不同端口的接收缓冲器和发送缓冲器对之间的能够选择的连接;
在所述至少一个上游时钟端口和所述至少一个下游时钟端口之间的至少一个旁路电路路径;以及
所述多个结构交换机、所述主时钟节点以及所述多个从节点上的多个结构链路互连端口,
其中,在所述系统的操作期间,所述主时钟节点生成主时钟时间数据,所述主时钟时间数据经由具有固定延迟的时钟树路径被转发至所述从节点中的每一个从节点,其中,每一个时钟树路径遍历至少一个结构交换机的所述旁路电路路径和多个结构链路。
23.如权利要求22所述的系统,其中,每一个结构交换机被配置为以旁路掉所述接收缓冲器、所述发送缓冲器以及所述交换电路的方式沿着所述至少一个旁路电路路径转发主时钟时间数据。
24.如权利要求23所述的系统,其中,所述系统执行用于促进所述从节点上的本地时钟与所述主时钟的同步的操作,所述操作包括:
经由具有固定延迟的各自的时钟树路径将由所述主时钟生成的主时钟时间数据转发至所述多个从节点中的每一个从节点;
对于每一个从节点,确定从所述主时钟节点至所述从节点的所述时钟树路径的所述固定延迟;以及
使用由所述从节点接收的主时钟时间数据和被确定的从所述主时钟节点至所述从节点的所述时钟树路径的所述固定延迟来对所述从节点的本地时钟和在所述主时钟节点上操作的所述主时钟进行同步。
25.如权利要求23或24所述的系统,其中,所述系统进一步被配置为:
确定每一个从节点上的本地时钟相对于所述主时钟的时钟速率不匹配;以及
使用针对每一个本地时钟确定的所述时钟速率不匹配来维持所述主时钟和每一个本地时钟之间的同步。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/977,773 US10372647B2 (en) | 2015-12-22 | 2015-12-22 | Exascale fabric time synchronization |
US14/977,773 | 2015-12-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107040326A true CN107040326A (zh) | 2017-08-11 |
CN107040326B CN107040326B (zh) | 2019-03-22 |
Family
ID=59067051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611224436.4A Expired - Fee Related CN107040326B (zh) | 2015-12-22 | 2016-11-22 | 用于百亿亿次级结构的时间同步的方法、装置和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10372647B2 (zh) |
CN (1) | CN107040326B (zh) |
DE (1) | DE112016005917T5 (zh) |
WO (1) | WO2017112142A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947173A (zh) * | 2019-03-18 | 2019-06-28 | 上海安路信息科技有限公司 | 最大时钟偏差的计算方法及计算系统 |
CN110267200A (zh) * | 2019-06-27 | 2019-09-20 | 合肥更鼓电子科技有限公司 | 一种基于高精度时间同步网络的基站定位方法 |
CN112468342A (zh) * | 2020-04-14 | 2021-03-09 | 谷歌有限责任公司 | 时钟同步系统的容错设计 |
CN114070448A (zh) * | 2021-12-06 | 2022-02-18 | 重庆邮电大学 | 一种基于多属性决策的主时钟选取方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10784986B2 (en) | 2017-02-28 | 2020-09-22 | Intel Corporation | Forward error correction mechanism for peripheral component interconnect-express (PCI-e) |
US10771189B2 (en) | 2018-12-18 | 2020-09-08 | Intel Corporation | Forward error correction mechanism for data transmission across multi-lane links |
US10834434B2 (en) | 2018-12-28 | 2020-11-10 | Intel Corporation | Methods and apparatus to reduce audio streaming latency between audio and Gigabit Ethernet subsystems |
US11637657B2 (en) | 2019-02-15 | 2023-04-25 | Intel Corporation | Low-latency forward error correction for high-speed serial links |
US11249837B2 (en) | 2019-03-01 | 2022-02-15 | Intel Corporation | Flit-based parallel-forward error correction and parity |
US11296994B2 (en) * | 2019-05-13 | 2022-04-05 | Intel Corporation | Ordered sets for high-speed interconnects |
US11212023B2 (en) * | 2019-11-06 | 2021-12-28 | Microsoft Technology Licensing, Llc | Systems and methods for nodes communicating using a time-synchronized transport layer |
US11740958B2 (en) | 2019-11-27 | 2023-08-29 | Intel Corporation | Multi-protocol support on common physical layer |
DE102019219475B4 (de) * | 2019-12-12 | 2021-08-05 | Continental Automotive Gmbh | Verfahren zur Optimierung der Zeitsynchronisation zwischen über ein Kommunikationsnetzwerk verbundenen Netzwerkgeräten |
US11463973B2 (en) * | 2020-04-28 | 2022-10-04 | Microsoft Technology Licensing, Llc | Clock synchronization using wireless side channel |
US11734105B2 (en) * | 2020-07-06 | 2023-08-22 | International Business Machines Corporation | Efficient error reporting in a link interface |
CN114173367B (zh) * | 2021-12-23 | 2023-11-03 | 烽火通信科技股份有限公司 | 时间同步路径保护方法、装置及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935232A (en) * | 1995-11-20 | 1999-08-10 | Advanced Micro Devices, Inc. | Variable latency and bandwidth communication pathways |
CN1643854A (zh) * | 2002-04-30 | 2005-07-20 | 国际商业机器公司 | 主从分布式通信系统中本地同步的方法和设备 |
US20090207832A1 (en) * | 2005-08-31 | 2009-08-20 | Janakiraman Senthilnathan | Synchronizing data transmission over wireless networks |
US20140126615A1 (en) * | 2012-11-06 | 2014-05-08 | Motorola Mobility Llc | Synchronizing receive data over a digital radio frequency (rf) interface |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8428069B2 (en) * | 1998-08-19 | 2013-04-23 | Wayne Richard Howe | Stealth packet switching |
US8599827B2 (en) | 2011-10-21 | 2013-12-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatuses for maintaining synchronization between a radio equipment controller and an item of radio equipment |
US9665121B2 (en) * | 2014-12-11 | 2017-05-30 | Khalifa University Of Science, Technology And Research | Method and devices for time transfer using peer-to-peer transparent clocks |
-
2015
- 2015-12-22 US US14/977,773 patent/US10372647B2/en active Active
-
2016
- 2016-11-16 WO PCT/US2016/062195 patent/WO2017112142A1/en active Application Filing
- 2016-11-16 DE DE112016005917.5T patent/DE112016005917T5/de not_active Withdrawn
- 2016-11-22 CN CN201611224436.4A patent/CN107040326B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935232A (en) * | 1995-11-20 | 1999-08-10 | Advanced Micro Devices, Inc. | Variable latency and bandwidth communication pathways |
CN1643854A (zh) * | 2002-04-30 | 2005-07-20 | 国际商业机器公司 | 主从分布式通信系统中本地同步的方法和设备 |
US20090207832A1 (en) * | 2005-08-31 | 2009-08-20 | Janakiraman Senthilnathan | Synchronizing data transmission over wireless networks |
US20140126615A1 (en) * | 2012-11-06 | 2014-05-08 | Motorola Mobility Llc | Synchronizing receive data over a digital radio frequency (rf) interface |
Non-Patent Citations (1)
Title |
---|
JURGEN JASPERNEITE ET AL.: "Enhancements to the time synchronization standard IEEE-1588 for a system of cascaded bridges", <PROCEEDINGS OF 2004 IEEE INTERNATIONAL WORKSHOP ON FACTORY COMMUNICATION SYSTEMS> * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947173A (zh) * | 2019-03-18 | 2019-06-28 | 上海安路信息科技有限公司 | 最大时钟偏差的计算方法及计算系统 |
CN110267200A (zh) * | 2019-06-27 | 2019-09-20 | 合肥更鼓电子科技有限公司 | 一种基于高精度时间同步网络的基站定位方法 |
CN112468342A (zh) * | 2020-04-14 | 2021-03-09 | 谷歌有限责任公司 | 时钟同步系统的容错设计 |
CN112468342B (zh) * | 2020-04-14 | 2023-08-18 | 谷歌有限责任公司 | 时钟同步系统的容错设计 |
US11799577B2 (en) | 2020-04-14 | 2023-10-24 | Google Llc | Fault tolerant design for clock-synchronization systems |
CN114070448A (zh) * | 2021-12-06 | 2022-02-18 | 重庆邮电大学 | 一种基于多属性决策的主时钟选取方法 |
CN114070448B (zh) * | 2021-12-06 | 2023-07-25 | 重庆邮电大学 | 一种基于多属性决策的主时钟选取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107040326B (zh) | 2019-03-22 |
US10372647B2 (en) | 2019-08-06 |
DE112016005917T5 (de) | 2018-11-22 |
WO2017112142A1 (en) | 2017-06-29 |
US20170177527A1 (en) | 2017-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040326B (zh) | 用于百亿亿次级结构的时间同步的方法、装置和系统 | |
CN105706388B (zh) | 用于减小数据损坏概率的通道错误检测和通道去除机制 | |
US8514889B2 (en) | Use of common data format to facilitate link width conversion in a router with flexible link widths | |
CN105900386B (zh) | 一种用于传送以太网分组的方法及装置 | |
US9515961B2 (en) | Credit flow control scheme in a router with flexible link widths utilizing minimal storage | |
US8798038B2 (en) | Efficient header generation in packetized protocols for flexible system on chip architectures | |
CN105814828B (zh) | 利用隐式确收的高效的链路层重试协议 | |
JP2016530764A (ja) | リンクファブリックパケットとは非同期なフリットバンドルを用いたリンク転送、ビットエラー検出、及びリンクリトライ | |
US10810488B2 (en) | Neuromorphic core and chip traffic control | |
JP2017506378A (ja) | ハイパフォーマンスファブリックにおける柔軟なクレジット交換の方法及びシステム | |
CN106502932B (zh) | 基于分层结构的片间互联接口及其写操作和读操作的方法 | |
CN103001846B (zh) | 用于数据网的嵌入式端到端延迟信息 | |
JP6311149B2 (ja) | 装置 | |
CN106576055A (zh) | 用于改进高性能计算中的集体操作的性能的系统、方法和装置 | |
CN109698788A (zh) | 流量转发方法和流量转发装置 | |
CN104243536B (zh) | 一种高速列车控制网络半实物仿真系统 | |
CN108631873A (zh) | 网络管理信息的收发方法、装置、发送设备和接收设备 | |
WO2018004931A1 (en) | Techniques for virtual ethernet switching of a multi-node fabric | |
CN105704067B (zh) | 交换装置 | |
US11637682B2 (en) | Extended sync network | |
CN110166320A (zh) | 基于OpenFlow交换机的MPLS-TP OAM实现方法及系统 | |
CN104572537B (zh) | 一种基于fpga的容错主从同步串行通讯系统 | |
CN102724115A (zh) | 一种适用于片上网络系统的链路层容错电路设计 | |
US20230026622A1 (en) | Tracing Activity from Multiple Components of a Device | |
US11928523B2 (en) | Synchronisation for a multi-tile processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190322 Termination date: 20191122 |