CN103580770B - 测量带有独立硅时钟的设备之间的时间偏差 - Google Patents
测量带有独立硅时钟的设备之间的时间偏差 Download PDFInfo
- Publication number
- CN103580770B CN103580770B CN201310435029.8A CN201310435029A CN103580770B CN 103580770 B CN103580770 B CN 103580770B CN 201310435029 A CN201310435029 A CN 201310435029A CN 103580770 B CN103580770 B CN 103580770B
- Authority
- CN
- China
- Prior art keywords
- time
- agent
- equipment
- request
- message
- 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.)
- Active
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
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
-
- 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
-
- 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
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0673—Clock or time synchronisation among packet nodes using intermediate nodes, e.g. modification of a received timestamp before further transmission to the next packet node, e.g. including internal delay time or residence time into the packet
-
- 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
-
- 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
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
-
- 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/0685—Clock or time synchronisation in a node; Intranode synchronisation
- H04J3/0697—Synchronisation in a packet node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0008—Synchronisation information channels, e.g. clock distribution lines
- H04L7/0012—Synchronisation information channels, e.g. clock distribution lines by comparing receiver clock with transmitter clock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W56/00—Synchronisation arrangements
- H04W56/001—Synchronization between nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
描述了关于测量带有独立硅时钟的设备之间的时间偏差的方法和装置。在一些实施例中,提供了基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步的逻辑。该第一代理和第二代理通过链接耦合。同样公开并声明了其他的实施例。
Description
相关申请
本公开涉及并要求下面五个美国临时专利申请的优先权,这些申请藉此为所有目的而被包含在此:
1.在2012年7月18日提交的、申请号为61673205,题为“用于测量带有独立硅时钟的设备之间的时间偏差的协议(PROTOCOL FOR MEASURING TIME OFFSETS BETWEENDEVICES WITH INDEPENDENT SILICON CLOCKS)”;
2.在2012年7月18日提交的、申请号为61673208,题为“用于测量带有独立硅时钟的设备之间的时间偏差的技术(TECHNIQUES FOR MEASURING TIME OFFSETS BETWEENDEVICES WITH INDEPENDENT SILICON CLOCKS)”;
3.在2012年7月18日提交的、申请号为61673210,题为“在测量带有独立硅时钟的设备之间的时间偏差时减少功率消耗(POWER CONSUMPTION REDUCTION WHEN MEASURINGTIME OFFSETS BETWEEN DEVICES WITH INDEPENDENT SILICON CLOCKS)”;
4.在2012年7月18日提交的、申请号为61673212,题为“在测量带有独立硅时钟的设备之间的时间偏差时的减少功率消耗(POWER CONSUMPTION REDUCTION WHEN MEASURINGTIME OFFSETS BETWEEN DEVICES WITH INDEPENDENT SILICON CLOCKS)”;以及
5.在2012年7月18日提交的、申请号为61673213,题为“用于优化低功率应用中的定时测量的技术(TECHBIQUES FOR OPTIMIZING TIMING MEASUREMENT IN LOW POWERAPPLICATIONS)”。
技术领域
本公开一般涉及电子领域。更具体地,本发明的实施例涉及测量带有独立硅时钟的设备之间的时间偏差。
背景技术
在现代计算系统中,多种设备可通过一个或多个链接相互连接。这些链接允许相互连接的设备之间的通信。然而,当设备互相连接时,操作的正确性可能依赖于设备之间的时钟同步。例如,如果互相连接的设备没有准确地同步,数据通信可能受阻。为了保持无错通信,设备之间的链接的速度可能需要被降低来允许适当的同步。这转而降低了性能。相应的,在计算系统中,互相连接的设备之间的时钟同步的准确度可能直接影响性能。
附图说明
参考附图提供详细说明。在图中,附图标记的最左边的数字标识该附图标记第一次出现的图。在不同图中相同附图标记的使用表示相似的或相同的项目。
图1A示出了根据一个实施例的定时测量技术的流程图。
图1B示出了根据一些实施例的定时测量技术的流程图。
图1C示出了根据一个实施例的时间同步逻辑100C的框图。
图1D示出了根据一个实施例的关于时间的控制和数据信息的交换的流程图。
图1E示出了根据一个实施例的带有增加的NAK(没有应答)消息的定时测量协议。
图1F示出了根据一个实施例的使用了“拉”模型的定时测量逻辑的框图。
图1G示出了根据一个实施例的提供有界的不准确的时间同步的流程图。
图1H示出了根据一个实施例的提供有界的不准确的时间同步的流程图。
图1I示出了根据一个实施例的提供有界的不准确的时间同步的流程图。
图1J示出了根据一个实施例的提供有界的不准确的时间同步的流程图。
图2示出了一个计算系统的实施例的框图,其被使用来实现此处讨论的多个实施例。
图3示出了一个计算系统的实施例的框图,其被使用来实现此处讨论的多个实施例。
图4示出了一个计算系统的实施例的框图,其被使用来实现此处讨论的多个实施例。
图5示出了一个计算系统的实施例的框图,其被使用来实现此处讨论的多个实施例。
具体实施方式
在下面的描述中,多个特定的细节被说明来提供对多个实施例的深入理解。然而,一些实施例可在没有这些特定的细节的情况下而被实施。在其他的例子中,众所周知的方法、流程、组件和电路没有被详细描述以免模糊特定实施例。本发明的实施例的多个方面可使用不同的方式来实现,例如集成半导体电路(“硬件”),组织为一个或多个程序的计算机可读指令(“软件”)或硬件和软件的一些组合。为本公开的目的,对“逻辑”的引用应指硬件、软件或他们的一些组合。
基于硅的时钟的一个局限是没有两个时钟在现在是什么时刻或时间流逝的速度上精确地达成一致。即使两个时钟被迫使在特定的时刻在时间上达成一致,它们可能立即开始漂移分离。在现代计算系统中使用了高振荡器频率,仅仅百万分之几的错误可能迅速累积到设备之间在时钟值上的相当的不一致。同样的,得益于在独立硬件时钟之间的精确同步的应用和使用模型由于这一限制可能不实用。一些解决方案包括私有机构来将时钟束缚在一起或者以其它方式解决这一限制。在其他情况下,设计者可能求助于模拟电路来去除对独立的硅时钟的依赖。
为了这个目的,一些实施例提供了在互相连接的设备之间达到细粒度的时间测量的技术。在一个实施例中,在计算机系统中互相连接设备使用的接口是外围组件互连高速(PCIe,例如,符合PCI基础规范3.0,修订版3.0,版本1.0,2010年11月10日)。在一个实施例中,独立设备周期性地获取全系统主时间(例如,由系统中的所有代理使用的)的快照。通过在已知的时间点(例如,并且在相同的时间单元)同时记录他们的本地时钟的值和全系统主时间,设备可以报告他们的本地时钟和全系统主时间之间的关系(例如,给软件应用,操作系统等等)。
一些实施例提供了在互相连接的设备之间达到细粒度的时间测量的技术,例如,基于发送更及时的数据给请求设备。一般地,在数字逻辑系统中定时信息始终是在变化的。在不同的定时域之间的无数小的频率上的起伏导致定时不精确性上的稳定损失。随着时间,这些多个误差源可使得获得正确的和准确的定时信息是不可能的。
此外,一些实施例使得响应设备发送更多最近的定时信息给请求设备。这个方法减少了上面讨论的多个误差源的影响,同时减少了请求频繁更新以解决那些误差源的需要。同样的,这种技术改善了在设备之间传递的定时信息的准确度,减少了功率消耗和/或保护了链接带宽。
相应的,在一个实施例中,没有设备需要关于任意其他设备的内部工作的任何知识。如果两个设备实现了此处讨论的同步技术,那么它们能够从一个设备传递准确的定时信息到另一个设备而不需要彼此操作的任何详细知识。这转而允许在计算平台中的相对非常低的功率、设备间链接。然而,本发明的实施例不限于这一方面,该技术可被更广泛地应用到任何种类的网络或设备上。
一些实施例提供了在测量带有独立硅时钟的设备之间的时间偏差时减少功率消耗的技术。一般地,当一个设备通过某种传输介质向第二连接的设备请求时间时问题产生了。响应设备然后从可信的时钟源获取时间来传输给请求设备。在这种情况下,响应设备在将回答传输给请求设备前需要考虑花费在获取该时间上的时间。如果没有,那么该获取的值在它被传输时将会是“陈旧的”。
对这个问题的一个解决方案是简单地将该可信时间源放置在响应设备中。然而,在许多设备可能需要访问可信时间的大型系统中这通常是不现实的。另一个选择是在响应设备中保持时间的本地副本。这个副本然后总是保持和原始时间源相同的值,免除了当服务请求时获取时间更新的需要。这个方法是起作用的,但是由于副本需要持续地更新,这消耗了比必需的更多的功率。
在一个实施例中,在计算机系统中使用的互相连接设备的接口是PCIe。然而,本发明的实施例不限于这一方面,该技术可被更广泛地应用到任何种类的网络或设备上。
一些实施例提供了在测量带有独立硅时钟的设备之间的时间偏差时减少功率消耗的技术。例如,在远程时间源为同步的目的提供主时间的情况下,远程时间控制器(timemaster)(例如通过串行接口耦合到系统的外部设备)可能不能立即响应。在这种情况下,控制器可能花费如此长的时间以至于请求者会错误地推断原始请求消息丢失了。
这个错误的“超时”结论会使得请求者采取行动以从其认为是错误的情形中恢复,例如,请求链接被重置,协商更低的链接速度和/或报告错误给软件。由于资源获取这些动作将明显地影响系统性能,甚至会导致重新启动计算机。对这个问题的一个可选的解决方案是将超时设置为一个非常大的值,其会对系统的效率产生不利的影响。
为了这个目的,一个实施例通过扩展能够作为主时间源的设备种类来改善系统性能,例如,通过去除上面描述的主时间需要足够快地被获取以避免超时情况的要求。
在一个实施例中,消息(此处也被称为“NAK”)使得当响应者确认NAK消息的接收并在其上工作时响应设备能够与请求者通信,其没有暂时发出响应所需的定时信息。请求者可能然后等待一些时间长度并响应于NAK消息的接收重新发送请求信息。
一些实施例提供了在低功率应用中优化定时测量的技术。例如,时间测量可以测量带有独立硅时钟的设备之间的时间偏差。一些实施例涉及从中央时间源到其他带有独立本地时钟的设备的定时数据的分发。对这个问题的一个方法是从中央源周期性地广播时间给所有参与的设备。然而,这个方法没有提供给其自身许多便携设备所需要的积极的功率管理策略。
在一个实施例中,在设备层次中请求时间/同步数据的流是相反的,使得感兴趣的设备从中央时间源“拉”时间而不是等待广播。这极大地改善了功率效率并使得积极的功率管理策略成为可能,在这一策略中设备将会经常处于非常低的功率状态来接收广播。
一些实施例提供了有界的不准确的时间同步,例如,简化准确时间在芯片间和芯片内的传输。此外,此处讨论的一些实施例可与由电气与电子工程师协会(IEEE)标准1588-2008,IEEE标准802.1AS-2011,和/或IEEE标准802.11v定义的先进的协议结合使用或否则的话使用到其中。然而IEEE802.1AS和IEEE1588描述了如何跨越网络来同步时间有时到次微秒的精确度,该协议要习计时器,计算以及复杂的状态机。为了这个目的,一些实施例提供了有界的不准确的时间同步来简化准确时间在芯片间和芯片内的传输。此外,这种实施例工作在总线的延迟/抖动通常比较低的地方,但是他们可以检测出伪造的高延迟/高抖动事件,并再次尝试协议。
图1A示出了根据一个实施例的定时测量技术的流程图。图1A中显示的设备A和B可以是任意种类的设备,例如参考图2-5讨论的任意一种。而且在多个实施例中,设备A可以是上游端,设备B可以是下游端。
参考图1A,设备A知晓全系统主时间和他自身的本地时钟之间的关系。同样,在一个实施例中设备A的本地时钟可以实际上是全系统主时间。设备B转而寻求全系统主时间的更新来与其本地时钟的当前值相关联。如图所示,设备B通过发送请求消息给设备A来开始更新,设备A然后用响应消息来响应。这些消息被每个设备发送和接收的准确时间由t1到t4来标识。每个设备在它发送或接收每个消息时根据或涉及它本身的本地时钟获取这些时间。
例如,在图1A中的第一个请求/响应对之后,设备B基于它的本地时钟记录下时间t1和t4。类似的,设备A基于它的本地时钟记录下时间t2和t3。对每个后续的响应消息,设备A发送由设备A发送之前的响应的全系统主时间(例如,时间t3)以及设备A用来响应之前的请求的时间(t3-t2)。使用这一信息,设备B可以确定全系统主时间和它自身的本地时钟之间的关系。
此外,“链接延迟”可被定义为特定消息经过传输介质所花费的时间。假设没有直接的机制来测量这个链接延迟,设备可使用一些技术来间接地计算这一时间。否则,从一个设备发送的定时值将会在它到达其他设备时变得陈旧。如果对特定介质的链接延迟在两个方向上是大致相等的,上述请求/响应对系统使得设备B能够使用下面的公式来计算链接延迟:
链接延迟=[(t4-t1)-(t3-t2)]/2
给定链接延迟,设备B可以如下计算对应于其本地时钟时间t4的全系统主时间:
MasterTime_at_t4=t3+链接延迟
设备B然后可以为软件或其他逻辑的后续使用存储这两个值,在t4的本地和主时间。
相应的,在一个实施例中,每个设备可以知晓他自身的本地时钟和全系统主时间之间的偏差。考虑到这些区别,逻辑可以跨多个独立设备准确地将事件同步到全系统主时间而不需要同步各自的硅时钟。
一些实施例可以允许下面的一个或多个:(a)使得设备能够考虑传输介质上的不确定的链接延迟;(b)实现设备的本地时钟和全系统主时间之间的准确关联;(c)仅仅使用两个消息,为其他使用节约了链接带宽;(d)对每个设备是外部的实现(例如,没有设备要求其他设备的内部操作的细节知识);(e)通过使得低功率状态下的设备能够延迟发送定时请求直到链接觉醒来改善功率效率;和/或(f)最小化特定请求/响应协议的执行和主时间的流逝之间的时间迟延(例如,t2可被立即传递给请求者,即使t3-t2同时并不可用-这还好,因为t3-t2仅用来计算相对静态的链接延迟)。
此外,一个实施例提供了新的方法,用于在设备之间的准确时间同步而不需要额外的导线或连接。同样的,“从”设备可以请求时间而不是主推送时间,允许从设备保持在低功率状态中更久。
在一些实施例中,如图1A所示的技术使得两个设备之间的链接延迟的确定以及从设备A到设备B的准确定时信息的传送成为可能。来自设备A的第二个(和每一个后续的)响应消息结束时,设备B可以通过在发送值t3上加上链接延迟来计算对应于其本地时间值t4的主时间值。
图1B示出了根据一些实施例的定时测量技术的流程图。图1B中显示的设备A和B可以是任意种类的设备,例如参考图2-5讨论的任意一种。而且在多个实施例中,设备A可以是上游端,设备B可以是下游端。
参考图1B,显示了根据一个实施例的时间同步的可选技术。如图所示,相对于图1A,在响应消息中,为主时间所发送的值t3被主时间值t2’所代替。设备B现在通过从设备A发送的主时间t2’中减去计算得到的链接延迟来计算在点t1’的主时间。
此外,PCIe规范可规定协议使用固定的数据构成消息。因此任何发送的值是来自于过去的一些事件,而不是来自当前消息。这阻止了发送主时间t3’,由于这是当前消息的一部分,如果当前消息没有成功通过会导致麻烦。考虑到这一点,t2’是下一个最近的值。
传递来自当前的请求信息的t2’而不是来自上一个响应信息的t3极大地降低了一个可能的误差源:t4和t1’之间的间隔可能任意地长的事实。在这个间隔期间,来自多个时钟源的不确定的小误差持续累积,降低了任意后续的基于在时间t3获取的越来越陈旧的值的计算的准确性。此处的问题是尽管在被获取时t3已经是准确的,在计算两个时钟域之间的关系时它的值随着时间的变化而退化。这些相同的误差源应用到时间t2’,但是由于请求消息的接收和相关的响应的发送之间的间隔通常是相当短的,其具有相当少的机会来累积。
除了改善设备B计算得到的结果的准确度之外,这个技术对设备功率节省和保护链接带宽同样是有贡献的。通过减少保持请求消息之间的间隔为短所需要的努力,这一方法减少了为了保持准确度在可接受水平而发送重复的消息的需要。在一些环境下,如果请求之间的间隔足够长,两个请求需要被发出来获取准确的时间值:一个来更新设备A的t3的概念以及另一个来把那个值发送给设备B。利用图1B的方法,这个场景不会发生。
图1C示出了根据一个实施例的时间同步逻辑100C的框图。逻辑100C可被纳入到多种设备中,例如参考图1D-5讨论的任意一种设备。如图所示,逻辑100C包括用于本地时间副本102的存储设备以及计数器104(例如,在响应设备中)。在一个实施例中,本地副本只在服务从其他设备请求时间时被使用。计数器记录获取时间所花费的时钟周期,允许本地副本逻辑保持休眠直到请求到达。该机制保持了具有中央时间源的灵活性,同时比可供选择的永远开启的副本耗费更少的功率。
进一步,在图1C所示的实施例中,即将来临的时间请求来自外部源。接口模块/单元逻辑106然后发送消息给片外的时间源请求时间更新并开启本地计数器104。随后,当更新到达时,片外时间源施以脉冲给同步线来指示发送给接口单元的当前时间是正确的。这个脉冲使得定时模块逻辑108锁存报告的值。本地时间副本102然后被输出作为所报告的定时值和本地计数器的和。本地计数器持续运行,在每个过去的时钟滴答更新本地时间副本直到时间被花费来满足原始的时间请求。在这个点,本地时间副本可以被丢弃且计数器被断电直到下一个时间请求到达。该机制产生满足原始的时间请求的周期准确值,而不需要花费额外的功率保持远程时间源的持续运行的本地副本。
图1D示出了根据一个实施例的关于时间的控制和数据信息的交换的流程图。在一些实施例中,每个远程时间源,本地定时模块以及请求设备被提供在系统中的代理中,例如参考图2-5讨论的系统的组件。更具体的,图1D显示了本地计数器(例如,图1C的计数器104)激活和失效的那些点。
如图1D所示,请求设备发送时间请求给本地定时模块(例如图1C的模块108)。响应于该时间请求,该模块开始它的本地计数器(例如,图1C的计数器104)并发送更新请求给远程时间源。一旦从远程时间源接收到时间更新,本地定时模块锁存/存储该更新的值(例如参考图1C讨论的那样)。在一个实施例中,时间更新可伴随着(或大体上同时)同步脉冲到达。随后,本地定时模块可以提供适当的响应(例如参考图1C讨论的那样)给请求设备。按照一个实施例,本地定时模块也可以在这个点停止本地计数器并有效地丢弃本地时间副本。
参考图1E,示出了根据一个实施例的带有增加的NAK消息的定时测量协议。如图1E所示,第一个请求(t1->t2)产生NAK消息。响应者(设备A)一旦接收到对时间的请求,确定其不具有用于完整响应消息的足够的信息,因此作为替代发送NAK。请求者(设备B)现在知道在重新发送请求前等待一些(例如,应用特定的)时间长度。后续的请求同样可能接收NAK消息直到响应者已经获得用于完整的响应消息的所需信息。
在一个实施例中,NAK消息允许响应者确认其已经接收到初始的请求,然而其继续为收集响应数据而工作。这避免了不期望的选择:简单地扩展传输介质的事务超时值来适应这个特别的事件,或者冒着导致事务超时情况的风险。在一个实施例中,NAK消息可以是专用的响应或使用保留的时间值(例如全“1”)作为标准响应的一部分。
相应的,一些实施例放松了设计支持精确的时间测量的系统的限制。在没有增加NAK消息的情况下,实施者将受限于它们对主时间源的选择以及它们如何服务于来自其他设备的时间请求。一个限制(起源于传输介质的要求)来自于所有的消息需要在确定的时间内被服务的事实,否则发起者会推断为时间请求没有被接收到。发送NAK消息确保这不会发生,尽管分配更多的时间给响应者收集需要的数据。
图1F示出了根据一个实施例的使用了“拉”模型的定时测量逻辑100F的框图。逻辑100F可被纳入到多种设备中,例如参考图2-5讨论的任意一种设备。例如逻辑100F可以包括根复合器102F(其和参考剩余的图讨论的RC222相同或类似)。
一般地,当在层次结构中分发时间信息时,根设备可以维持主时间并周期性地广播定时消息给所有的参与设备。这一方法消耗功率来广播所有的消息而不管接收者在那时是否实际需要它们。此外,所有的介于中间的链接保持活跃使得接收者可以接收消息,并且设备自身保持在较高功率状态来接收即将到来的通信量。
参考图1F,显示了设备层次结构的一个实施例。在一个实施例中,一个或多个设备只在它们需要的时候请求时间。如果接收请求的设备具有用于该时间的有效值,它立即将其提供给响应者。否则,接收者发送其自身的定时请求给在层次结构中在其上面的设备。这一过程持续直到请求到达带有最新的主时间值的设备。要注意的是,在一个实施例中,层次结构的根将永远具有有效的主时间值。同样,在一些实施例中,连接到根的交换机可以是时间控制器。按照至少一个实施例,在这种情况下,只有连接到该交换机的设备可以访问到准确的时间,根本身不会参与履行对时间请求的响应。
例如,如果设备A请求时间,并且交换机104F没有,交换机转而发送其自身的时间请求给在层次结构中在其上面的下一个设备(即,给根102F)。当时间从根102F到达时,交换机满足设备A的请求。
同样的,如果设备C在一个时刻不需要时间,它不发送任何消息,从而减少了功率消耗(例如,由于设备C可以进入较低功耗状态)和/或保持了逻辑100F中的链接带宽(例如,由于没有由设备C产生的通信量)。
此外,设备B可以在稍后的时间点请求时间。刚刚为了回答设备A的请求更新了其自身的时间,交换机可以满足设备B的请求(例如,代替产生额外的到根102F的通信量)。在一个实施例中,在使用交换机的时间满足设备B的请求之前,交换机104F可以先确定它的时间是否仍然被认为是有效的和不陈旧的,例如,基于记录了交换机时间在怎样的近来更新的阈值和/或计时器值。
由于设备充分了解何时它们需要时间,并只在需要时才请求时间,定时信息通常比广播模型更少频率地发送。后者周期性地广播定时数据,而不了解哪个设备实际需要它,其转而消耗了额外的功率并消耗了链接上的带宽。同样的,由于没有为广播消息保持觉醒的必要,设备自由地进入低功率状态并且甚至中断它们的PCIe链接的电源而没有丢失定时数据的风险。随后,当设备醒来开始工作,它可以在那一点发送定时请求。如此处讨论的,对“PCI”或者“PCIe”的引用不限于仅仅此类设备,并且这些术语可被替换为“通信链接”。
图1G-1J示出了根据一些实施例的提供有界的不准确的时间同步,例如,简化准确时间在芯片间和芯片内的传输的流程图。此外,这种实施例工作在总线的延迟/抖动通常比较低的地方,但是他们可以检测出伪造的高延迟/高抖动事件,并再次尝试协议(例如,如图1G-1I的重试所示)。
参考图1G-1J,一个设备被认为是时间源并被标记为“平台时间计数器”。如图所示,使用消息传送来传达时间源的时间给所有的相关模块(在图1G-1J中一个被表示为模块X)。模块X具有与时间同步单元通信的控制单元以及计数本地时间的本地计数器。时间源发送消息给与模块X的控制单元接口的时间同步单元。
参考图1G,命令(例如同步开始命令(SyncStartCMD))开始该有界的过程。时间捕捉信号然后被发送使得时间同步单元获取当前平台时间值的快照。这一获取的值然后被转发给模块X的控制单元。模块X的控制单元通过使用提供的平台时间快照作为开始值开启它的本地计时器来将它的本地时钟与系统时间同步。应答(ACK)然后被返回给时间同步单元,其执行有限的检查,例如,将时间捕捉信号的发送和来自模块X的控制单元的ACK消息的接收之间的时间差(time delta)与一个阈值(y)进行比较。这一有限的检查包括比较在接收到ACK消息时的平台时间计数器的值与在时间捕捉信号处获取的存储的值。如果流逝的时间差小于阈值(y),该有限的检查成功。时间同步单元然后发送同步比较通过消息(通过SyncComp(OK))给模块X的控制单元。之前提到的流程是针对时间差小于阈值(y)。然而如果时间差大于阈值(y),这表示捕获的平台时间值的传输延迟如此长使得该值现在太陈旧而不能被信赖。时间同步单元引起重试直到时间差低于阈值(y)。在一个实施例中,如果重试需要被尝试,同步比较失败(SyncComp(Fail))可被发送来标记时间具有无效状态。
参考图1H,主要跟随了图1G的流程,除了时间同步单元传递未来时间值(平台时间加上偏差(Y))给模块X的控制单元。模块X的本地计数器停止它的时钟并延迟它的计时器的开启直到时间同步单元发送同步信号。模块X的本地计时器加载该未来时间值到它的寄存器中并发送Arm开始指示来传达它已经为同步信号准备好了。这个信号指示当前的平台时间现在与在本地同步(平台时间+Y)消息中发送的时间值相匹配。
参考图1I,主要跟随了图1G的流程,除了模块X的控制单元存储了一对时间值快照或时间戳:一个用于它的本地自由运行的计数器,另一个用于平台时间计数器。响应于本地同步消息,模块X的控制单元采样模块X的本地计数器的当前值并将该值和在本地同步消息中提供的平台时间值一起存储。
参考图1J,主要跟随了图1I的流程,除了这个流程采用了同步信号(Sync)来使得模块X的控制单元在时间同步单元采样系统时间计数器的值的相同时刻采样它的自由运行的本地时间计数器的值。
图1G和1H显示了模块X想要它的本地时间计数器包括和平台时间计数器的相同的值的情况下的消息流。图1I和1J显示了模块X已经有独立时钟(例如,每次发送采样到编码解码器(编码器/解码器)时计数多一个的音频接口模块)的情况下的消息流。此外,在图1G和1I显示的流中不要求两个单元之间的除了总线的任意连接,但是与在两个单元之间采用线路(允许或多或少的时间信息的同时获取)以及相对好得多的精确度的IH和1J中的流比较时,精确度可能更多的被限制了。
此外,此处讨论的一些实施例可与由电气与电子工程师协会(IEEE)标准1588-2008,IEEE标准802.1AS-2011,和/或IEEE标准802.11v定义的先进的协议结合使用或否则的话使用到其中。
同样,此处讨论的技术可被用来促进在计算系统的不同设备之间的时间/时钟同步,包括例如,在处理器,芯片组,片上系统设备,联网设备(例如,局域网(LAN)和/或无线LAN设备)等等,例如在此处参考剩下的图2-5中的任意一个讨论的设备。
更具体的,图2示出了根据本发明的一个实施例的计算系统200的框图。系统200包括一个或多个代理202-1到202-M(此处共同地被称为“代理202”或更普遍地“代理202”)。在一个实施例中,代理202是计算系统的组件,例如参考图3-5讨论的计算系统。
如图2所示,代理202通过网络结构204通信。在一个实施例中,网络结构204可包括通过串行的(例如,点到点)链接和/或共享的通信网络进行通信的一个或多个互连(或互连网络)。每个链接可包括一个或多个线路。例如,一些实施例可促进组件调试或链接验证,其允许与全缓冲双列直插存储器模块(FBD)的通信,例如,在FBD链接是用于将存储器模块耦合到主机控制器设备(例如处理器或存储器中枢)的串行链接的情况下。调试信息从FBD信道主机发送使得调试信息沿着信道被信道通信踪迹获取工具(例如一个或多个逻辑分析器)观察。
在一个实施例中,系统200可支持分层协议模式,其包括物理层,链接层,路由层,传输层和/或协议层。结构204进一步促进对点到点网络从一个协议(例如,高速缓存处理器或高速缓存知晓存储控制器)到另一个协议的数据传输(例如,以分组的形式)。同样的,在一些实施例中,网络结构204可提供坚持一个或多个高速缓存一致协议的通信。
此外,如图2中的箭头方向所示,代理202通过网络结构204发送和/或接收数据。因此,为了通信一些代理利用单向链接而其他的利用双向链接。例如,一个或多个代理(例如代理202-M)发送数据(例如,通过单向链接206),其他代理(例如代理202-2)接收数据(例如通过单向链接208),而一些代理(例如代理202-1)既发送也接收数据(例如通过双向链接210)。
同样的,根据一个实施例,一个或多个代理202包括一个或多个输入/输出中枢(IOH)220来促进代理(例如所示的代理202-1)和一个或多个输入/输出(“I/O”或者“IO”)设备224(例如PCIe I/O设备)之间的通信。IOH220包括根复合器(RC)222(其包括一个或多个根端口)来耦合和/或促进代理202-1的组件(例如处理器,存储器子系统等等)和I/O设备224之间的,符合PCIe规范(例如符合PCI高速基础规范3.0,同时被称为PCIe3.0或PCI Gen3或者PCIe Gen3)的通信。在一些实施例中,多代理系统的一个或多个组件(例如处理器核心,芯片集,输入/输出中枢,存储控制器等等)包括RC222和/或IOH220,正如参考剩下的图将被进一步讨论的。
此外,代理202可包括PCIe控制器235来管理PCIe接口的多个操作,包括例如,代理202中的PCIe组件的功率管理或时间同步特征/方面,例如正如参考图1A所讨论的。进一步的,如图2所示,代理202-1可访问存储器240。正如参考图3-5将被进一步讨论的,存储器240可存储多种项目,包括例如OS,设备驱动器,等等。
更具体的,图3是根据一个实施例的计算系统300的框图。系统300包括多个套接口302-308(显示了四个但是一些实施例可以有更多或者更少的套接口)。每个套接口包括处理器以及IOH220,RC222和PCIe控制器235中的一个或多个。在一些实施例中,IOH220,RC222和/或PCIe控制器235可被显示在系统300的一个或多个组件中(例如图3中显示的那些)。而且,更多的或更少的220,222,和/或235块根据实现被显示在系统中。此外,每个套接口通过点到点(PtP)链接,或者不同的互连,例如,快速通道互连(QPI),MIPI(移动行业处理器接口)等等,来与其他的套接口耦合。正如关于图2的网络结构204所讨论的,每个套接口耦合到系统存储器的本地部分,例如,由包括动态随机存取存储器(DRAM)的多个双列直插式存储模块(DIMM)形成的。
在另一个实施例中,网络结构可为任何片上系统(SoC)应用所利用,利用定制或标准的接口,例如,用于AMBA(高级微控制器总线架构),OCP(开放核心协议),MIPI(移动行业处理器接口),PCI(外围组件互连)或PCIe(外围组件互连高速)的适用于ARM的接口。
一些实施例使用了能够在基于PC(个人计算机)的系统(例如基于PCI的系统)中使用异类的资源的技术,例如AXI/OCP技术,而不需要对IP资源本身作出任何改变。实施例提供了两个非常薄的硬件块,此处被称为Yunit和垫片(shim),其可被用于将AXI/OCP IP插入到自动生成的互连结构中来创建兼容PCI的系统。在一个实施例中,Yunit的第一(例如,北的)接口连接到适配器块,该适配器块与兼容PCI的总线相接口,兼容PCI的总线例如直接介质接口(DMI)总线,PCI总线或外围组件互连高速(PCIe)总线。第二(例如南的)接口直接连接到非PC互连,例如AXI/OCP互连。在多个实现中,这个总线可以是OCP总线。
在一些实施例中,Yunit通过将PCI配置周期转换为目标IP可以理解的事务实现PCI枚举。这个单元同样执行从可重新定位的PCI地址到固定的AXI/OCP地址的地址转换,反之亦然。Yunit可进一步地实现订购机制来满足生产者-消费者模型(例如,PCI生产者-消费者模型)。轮流的,单独的IP通过专门的PCI垫片连接到互连。每个垫片可为相应的IP实现完整的PCI头。Yunit将所有对PCI头和设备存储器空间的访问路由到垫片。该垫片消耗所有的头读/写事务并将其他的事务传送给IP。在一些实施例中,垫片同样为IP实现所有的功率管理相关的特征。
因此,不是作为单片电路兼容块,实现了Yunit的实施例采用了分布的方式。跨越所有IP的通用功能,例如地址转换以及订购,实现在Yunit中,而IP特定的功能,例如功率管理、错误控制等等实现在为IP定制的垫片中。
以这种方式,新的IP可被加入而对Yunit作出最小的改变。例如,在一个实现中,通过在地址重定向表中增加新的条目可发生改变。尽管垫片是IP特定的,在一些实现中,大量的功能(例如,大于90%)是跨越所有IP通用的。这使得为新的IP快速配置已有的垫片成为可能。一些实施例因此也实现使用自动生成的互连结构而不做修改。在点到点总线架构中,设计互连结构是一个挑战性的任务。上面描述的Yunit方法将工业生态系统用于PCI系统中,其利用最小的努力且不要求对工业标准工具作出任何修改。
如图3所示,每个套接口耦合到存储控制器(MC)/本地代理(HA)(例如MC0/HA0到MC3/HA3)。存储控制器耦合到相应的本地存储器(标识为MEM0到MEM3),其可以是系统存储器(例如图4中的存储器412)的一部分。在一些实施例中,存储控制器(MC)/本地代理(HA)(例如MC0/HA0到MC3/HA3)可以与图2中的代理202-1相同或相似,并且存储器,标识为MEM0到MEM3,可以与参考此处任意的图讨论的存储器设备相同或相似。一般的,处理/高速缓存代理发送请求到本地节点来访问与相应的“本地代理”相关联的存储器地址。同样的,在一个实施例中,MEM0到MEM3可被配置来镜像数据,例如,主从。同样的,在一些实施例中,系统300的一个或多个组件可被包括在相同的集成电路管芯中。
此外,一个实现(如图3所示)是用于带有镜像的套接口无缝配置。例如,分配给存储控制器(例如MC0/HA0)的数据通过PtP链接被镜像到另一个存储控制器(例如MC3/HA3)。
图4示出了根据本发明的一个实施例的计算系统400的框图。计算系统400可包括一个或多个中央处理器单元(CPU)402-1到402-N或处理器(此处共同地被称为“处理器402”或更普遍地“处理器402”),它们通过互连网络(或总线)404通信。处理器402可包括通用处理器,网络处理器(处理通过计算机网络403通信的数据)或者其他种类的处理器(包括精简指令集计算机(RISC)处理器或者复杂指令集计算机(CISC))。此外,处理器402可具有单核或者多核设计。带有多核设计的处理器402可集成不同种类的处理器核在相同集成电路(IC)管芯中。同样的,带有多核设计的处理器402可被实现为对称的或不对称的多处理器。
同样的,参考图1A-3讨论的操作可被系统400的一个或多个组件执行。在一些实施例中,处理器402可以是与图3的处理器302-308相同的或类似的。此外,处理器402(或系统400的其他组件)可包括IOH220,RC222以及PCIe控制器235中的一个或多个。此外,尽管图4示出了项目220/122/135的一些位置,但是这些组件可被放置在系统400的别处。例如,I/O设备224可通过总线422通信,等等。
芯片集406同样可与互连网络404通信。芯片集406可包括图形和存储器控制器中枢(GMCH)408。GMCH408可包括与存储器412通信的存储器控制器410。存储器412可存储数据,包括由CPU402或者包括在计算系统400中的其他任意设备执行的指令序列。例如,如结合前面的图所讨论的,存储器412可存储对应于操作系统(OS)413和/或设备驱动器411的数据。在一个实施例中,存储器412和图2中的存储器420可以是相同或者类似的。在本发明的一个实施例中,存储器412可包括一个或多个易失性存储(或存储器)设备,例如,随机存取存储器(RAM),动态RAM(DRAM),同步DRAM(SDRAM),静态RAM(SRAM)或其他种类的存储设备。非易失性存储器同样可以用作例如硬盘。另外的设备可通过互连网络404通信,例如多个CPU和/或多个系统存储器。
另外,一个或多个处理器402可以访问一个或多个高速缓存(在多个实施例中,其可包括私有的和/或共享的高速缓存)和相关的高速缓存控制器(未示出)。高速缓存可遵守一个或多个高速缓存相关协议。高速缓存可存储被系统400的一个或多个组件使用的数据(例如,包括指令)。例如,为了处理器402的组件的快速访问,高速缓存可本地缓存存储在存储器412中的数据。在一个实施例中,高速缓存(可以是共享的)可包括中级高速缓存和/或末级高速缓存(LLC)。同样的,每个处理器402可包括级别2(L1)缓存。处理器402的多种组件可通过总线或互连网络与高速缓存,和/或存储控制器或中枢直接通信。
GMCH408还可包括与显示设备416通信(例如通过图形加速器)的图形接口414。在本发明的一个实施例中,图形接口414可通过加速图形端口(AGP)与图形加速器通信。在本发明的一个实施例中,显示器416(例如平板显示器)可通过例如信号转换器与图形接口414通信,信号转换器将存储在存储设备(例如视频存储器或系统存储器)中的图像的数字表示转换为由显示器416解释和显示的显示信号。由显示设备产生的显示信号在被显示器416解释之前可被传输经过多种控制设备,随后被显示在显示器416上。
中枢接口418可允许GMCH408和输入/输出控制中枢(ICH)420通信。ICH420可提供到与计算系统400通信的I/O设备的接口。ICH420可通过外设桥(或控制器)424,例如外围组件互连(PCI)桥、通用串行总线(USB)控制器、或者其他种类的外设桥或控制器,与总线422通信。桥424可提供CPU402和外围设备之间的数据通道。其他类型的拓扑可被使用。同样的,多个总线可与ICH420通信,例如通过多个桥或控制器。此外,在本发明的多种实施例中,和ICH420通信的其他外设可包括,集成驱动器电子设备(IDE)或小型计算机系统接口(SCSI)硬驱动器,USB端口,键盘,鼠标,并行端口,串行端口,软盘驱动器,电子输出支持(例如,数字视频接口(DVI))或者其他设备。
总线422可与音频设备426、一个或多个磁盘驱动器428以及网络接口设备430(其与计算机网络403通信)通信。其他的设备可通过总线422通信。同样的,在本发明的一些实施例中,多种组件(例如网络接口设备430)可和GMCH408通信。此外,处理器402以及GMCH408和/或芯片集406的一个或多个组件可被组合来形成单个集成电路芯片(或以其它方式出现在相同的集成电路管芯中)。
此外,计算系统400可包括易失性和/或非易失性存储器(或存储)。例如,非易失性存储器可包括下列的一个或多个:只读存储器(ROM),可编程ROM(PRAM),可擦除PROM(EPROM),电EPROM(EEPROM),盘驱动器(例如428),软盘,压缩盘ROM(CD-ROM),数字通用盘(DVD),闪存存储器,磁光盘,或者其他种类的能够存储电子数据(例如,包括指令)的非易失性机器可读介质。
图5示出了根据本发明的一个实施例的、以点到点(PtP)配置来布置的计算系统500。更具体的,图5显示了其中处理器、存储器以及输入/输出设备通过一些点到点接口互连的系统。参考图1A-4讨论的操作可被系统500的一个或多个组件执行。
如图5所示,系统500可包括多个处理器,为了清楚起见,仅仅示出它们中的两个,即处理器502和504。处理器502和504每一个可包括本地存储器控制器中枢(MCH)506和508来使能与存储器510和512的通信。存储器520和/或512可存储多种数据,例如参考图4的存储器412讨论的那些。如图5所示,处理器502和504也可包括参考图4讨论的高速缓存。
在一个实施例中,处理器502和504可以是参考图4讨论的处理器402中的一个。处理器502和504可分别使用PtP接口电路516和518通过点到点(PtP)接口514来交换数据。同样的,处理器502和504可各自使用点到点接口电路526,528,530和532通过各自的PtP接口522和524来和芯片集520交换数据。芯片集520可进一步,例如使用PtP接口电路537,通过高性能图形接口536与高性能图形电路534交换数据。
本发明的至少一个实施例被提供在处理器502和504或芯片集520中。例如,处理器502和504和/或芯片集520可包括IOH220,RC222以及PCIe控制器235中的一个或多个。然而,本发明的其他实施例可存在于图5的系统500中的其他的电路、逻辑单元或设备中。此外,本发明的其他实施例可分布在图5所示的多个电路、逻辑单元或设备中。因此,图5中显示的项目220/122/135的位置是示例性的,并且这些组件可以在或者不在所示的位置上提供。
芯片集520可使用PtP接口电路541和总线540通信。总线540可具有一个或多个设备与其通信,例如,总线桥542以及I/O设备543。通过总线544,总线桥542可与其他设备通信,例如键盘/鼠标545,通信设备546(例如,调制解调器,网络接口设备或者其他可与计算机网络403通信的通信设备),音频I/O设备,和/或数据存储设备548。数据存储设备548可存储可由处理器502和/或504执行的代码549。
在本发明的多个实施例中,此处讨论的操作,例如参考图1A-5所讨论的,可被实现为硬件(例如电路),软件,固件,微码或者它们的组合,其可被作为计算机程序产品被提供,例如包括在其上存储有用来编程使得计算机执行此处讨论的流程的指令(或者软件程序)的(例如,非易失性的)机器可读或(例如,非易失性的)计算机可读介质。同样的,术语“逻辑”可包括,以例子的方式,软件、硬件或者软件和硬件的组合。机器可读介质可包括例如参考图1A-5讨论的存储设备。此外,这种计算机可读介质可作为计算机程序产品被下载,其中该程序可按通过载波或其他传播介质经由通信链接(例如,总线,调制解调器或者网络连接)传输的数据信号的方式从远程计算机(例如,服务器)被传送到请求计算机(例如,客户机)。
在说明书中提及“一个实施例”或者“实施例”意味着结合实施例描述的特定特征、结构或特性可被包括在至少一个实现中。短语“在一个实施例中”在说明书中多个位置的出现可以是或者可以不是都指向相同的实施例。
同样的,在说明书和权利要求书中,术语“耦合”、“连接到”以及它们的派生物可被使用。在本发明的一些实施例中,“连接到”可被用来指示两个或多个组件互相之间有直接的物理或电连接。“耦合”可意味着两个或多个组件有直接的物理或电连接。然而,“耦合”同样可意味着两个或更多个组件互相之间没有直接的连接,但是互相之间仍然协作或交互。
下面的例子关于进一步的实施例。例子1包括一种装置,其包括:基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步的逻辑,其中第一代理和第二代理通过链接耦合。例子2包括例子1的装置,其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照。例子3包括例子2的装置,其中第一代理和第二代理用于在单个时间点将它们的本地时钟和平台时间的快照进行比较。例子4包括例子1的装置,其中平台时间包括由系统中的所有代理使用的全系统主时钟。例子5包括例子1的装置,其中平台时间由远程设备提供,该远程设备在包括第一代理和第二代理的系统的外部。例子6包括例子5的装置,其中该远程设备通过串行接口耦合到系统。例子7包括例子1的装置,其中一个或多个消息包括使得请求代理在重新发送请求前等待一个时间段的消息。例子8包括例子1的装置,其中作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子9包括例子1的装置,其中链接包括外围组件互连高速(PCIe)链接。例子10包括例子1的装置,其中该逻辑用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。例子11包括例子10的装置,其中响应于对请求的至少一个重试的发生,比较失败消息被发送给请求设备。
例子12包括一种方法,其包括:基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步,其中第一代理和第二代理通过链接耦合。例子13包括例子12的方法,进一步包括基于第一代理和第二代理之间交换的一个或多个消息周期性地获取平台时间的快照。例子14包括例子13的方法,进一步包括第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。例子15包括例子12的方法,进一步包括由远程设备提供平台时间,该远程设备在包括第一代理和第二代理的系统的外部。例子16包括例子12的方法,进一步包括发送消息使得请求代理在重新发送请求前等待一个时间段。例子17包括例子12的方法,进一步包括作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子18包括例子12的方法,进一步包括比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。例子19包括例子18的方法,进一步包括响应于对请求的至少一个重试的发生,发送比较失败消息给请求设备。
例子20包括一种系统,其包括:包括第一代理和第二代理的处理器;以及基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步的逻辑,其中第一代理和第二代理通过链接耦合。例子21包括例子20的系统,其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照。例子22包括例子20的系统,其中平台时间包括由系统中的所有代理使用的全系统主时钟。例子23包括例子20的系统,其中平台时间由远程设备提供,该远程设备在包括第一代理和第二代理的系统的外部。例子24包括例子20的系统,其中作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子25包括例子20的系统,其中该逻辑用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。
例子26包括一种装置,其包括:允许第一代理基于存储在本地时间副本存储设备中的值来满足来自第二代理的定时请求的逻辑,以及记录在与逻辑满足该定时请求相关的时期期间经过的时间的计数器,其中该第一代理通过两个链接耦合在第二代理和第三代理之间。例子27包括例子26的装置,其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照。例子28包括例子27的装置,其中第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。例子29包括例子27的装置,其中平台时间包括由系统中的所有代理使用的全系统主时钟。例子30包括例子27的装置,其中平台时间由远程设备提供,该远程设备在包括第一代理和第二代理的系统的外部。例子31包括例子30的装置,其中该远程设备通过串行接口耦合到系统。例子32包括例子27的装置,其中一个或多个消息包括使得请求代理在重新发送请求前等待一个时间段的消息。例子33包括例子26的装置,其中作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子34包括例子26的装置,其中该逻辑用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。例子35包括例子34的装置,其中响应于对请求的至少一个重试的发生,比较失败消息被发送给请求设备。
例子36包括一种装置,其包括:逻辑,该逻辑耦合到第一代理并响应于来自第二代理的请求,以消息响应来使得第二代理等待一个时间段并在第一代理确定它没有足够的信息来响应该请求时重新发送请求,其中第一代理和第二代理通过链接耦合。例子37包括例子36的装置,其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照。例子38包括例子37的装置,其中第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。例子39包括例子36的装置,其中平台时间包括由系统中的所有代理使用的全系统主时钟。例子40包括例子36的装置,其中平台时间由远程设备提供,该远程设备在包括第一代理和第二代理的系统的外部。例子41包括例子40的装置,其中该远程设备通过串行接口耦合到系统。例子42包括例子36的装置,其中一个或多个消息包括使得请求代理在重新发送请求前等待一个时间段的消息。例子43包括例子36的装置,其中作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子44包括例子36的装置,其中该逻辑用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。例子45包括例子44的装置,其中响应于对请求的至少一个重试的发生,比较失败消息被发送给请求设备。
例子46包括一种装置,其包括:逻辑,该逻辑允许第一代理响应于第二代理的请求并基于本地存储的时间和对转发到第三代理的请求的响应中的一个满足来自第二代理的定时请求,其中第三代理在系统层次结构上在第一代理上面,其中第一代理和第二代理通过链接耦合。例子47包括例子46的装置,其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照。例子48包括例子47的装置,其中第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。例子49包括例子47的装置,其中平台时间包括由系统中的所有代理使用的全系统主时钟。例子50包括例子47的装置,其中平台时间由远程设备提供,该远程设备在包括第一代理和第二代理的系统的外部。例子51包括例子50的装置,其中该远程设备通过串行接口耦合到系统。例子52包括例子47的装置,其中一个或多个消息包括使得请求代理在重新发送请求前等待一个时间段的消息。例子53包括例子46的装置,其中作为等待来自中央时间源的广播的替换,请求代理从中央时间源拉时间。例子54包括例子46的装置,其中该逻辑用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。例子55包括例子54的装置,其中响应于对请求的至少一个重试的发生,比较失败消息被发送给请求设备。
例子56包括例子1到55中的任意一个的装置,其中链接包括外围组件互连高速(PCIe)链接。
例子57包括包含一个或多个指令的计算机可读介质,该指令在处理器中执行时配置处理器以执行例子12到19的任意一个中的一个或多个操作。
例子58包括一种设备,其包括:基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步的装置,其中第一代理和第二代理通过链接耦合。例子59包括例子58的设备,进一步包括用于基于在第一代理和第二代理之间交换的一个或多个消息周期性地获取平台时间的快照的装置。例子60包括例子59的设备,进一步包括第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较的装置。例子61包括例子58的设备,进一步包括用于由远程设备提供平台时间的装置,该远程设备在包括第一代理和第二代理的系统的外部。例子62包括例子58的设备,进一步包括用于发送消息使得请求代理在重新发送请求前等待一个时间段的装置。例子63包括例子58的设备,进一步包括用于作为等待来自中央时间源的广播的替换,使请求代理从中央时间源拉时间的装置。例子64包括例子58的设备,进一步包括用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试的装置。例子65包括例子64的设备,进一步包括用于响应于对请求的至少一个重试的发生,发送比较失败消息给请求设备的装置。
因此,尽管本发明的实施例已经以语言详细描述了结构特征和/或方法行为,需要理解的是要求保护的主题不限于描述的特定特征或行为。相反的,特定特征和行为作为要求保护的主题的示例形式的实现被公开。
Claims (17)
1.一种测量带有独立硅时钟的设备之间的时间偏差的装置,所述装置包括:
逻辑单元,所述逻辑单元基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步,
其中第一代理和第二代理通过链接耦合,其中所述第一代理中所包括的本地时间副本只在所述第一代理服务来自所述第二代理的对时间的请求时被使用,并且其中作为等待来自中央时间源的广播的替换,所述第二代理进一步从中央时间源拉时间。
2.如权利要求1所述的装置,其中在第一代理和第二代理之间交换的所述一个或多个消息用于周期性地获取平台时间的快照。
3.如权利要求2所述的装置,其中第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。
4.如权利要求1所述的装置,其中平台时间包括由系统中的所有代理使用的全系统主时钟。
5.如权利要求1所述的装置,其中平台时间由远程设备提供,所述远程设备在包括第一代理和第二代理的系统的外部。
6.如权利要求5所述的装置,其中所述远程设备通过串行接口耦合到系统。
7.如权利要求1所述的装置,其中所述一个或多个消息包括使得请求代理在重新发送请求前等待一个时间段的消息。
8.如权利要求1所述的装置,其中链接包括外围组件互连高速(PCIe)链接。
9.如权利要求1所述的装置,其中所述逻辑单元用于比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。
10.如权利要求9所述的装置,其中响应于对请求的至少一个重试的发生,比较失败消息被发送给请求设备。
11.一种测量带有独立硅时钟的设备之间的时间偏差的方法,所述方法包括:
基于在第一代理和第二代理之间交换的一个或多个消息以及平台时间来将第一代理的第一时钟与第二代理的第二时钟同步,
其中第一代理和第二代理通过链接耦合,其中所述第一代理中所包括的本地时间副本只在所述第一代理服务来自所述第二代理的对时间的请求时被使用,并且其中作为等待来自中央时间源的广播的替换,所述第二代理进一步从中央时间源拉时间。
12.如权利要求11所述的方法,进一步包括基于第一代理和第二代理之间交换的所述一个或多个消息周期性地获取平台时间的快照。
13.如权利要求12所述的方法,进一步包括第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较。
14.如权利要求11所述的方法,进一步包括比较阈值和来自时间源的时间捕捉消息的到达与时间源处的检查有限的确定之间的时间差值来确定请求是否要被重试。
15.一种测量带有独立硅时钟的设备之间的时间偏差的装置,所述装置包括:
逻辑单元,所述逻辑单元耦合到第一代理并响应于来自第二代理的请求,以消息响应来使得第二代理等待一个时间段并在第一代理确定它没有足够的信息来响应所述请求时重新发送请求,
其中在第一代理和第二代理之间交换的一个或多个消息用于周期性地获取平台时间的快照,
其中第一代理和第二代理在单个时间点将它们的本地时钟和平台时间的快照进行比较,
其中第一代理和第二代理通过链接耦合,其中所述第一代理中所包括的本地时间副本只在所述第一代理服务来自所述第二代理的对时间的请求时被使用,并且其中作为等待来自中央时间源的广播的替换,所述第二代理进一步从中央时间源拉时间。
16.一种测量带有独立硅时钟的设备之间的时间偏差的设备,包括执行权利要求11到14中的任意一个所述的方法的装置。
17.一种测量带有独立硅时钟的设备之间的时间偏差的机器可读介质,包括存储在所述机器可读介质上的多条指令,所述多条指令当被执行时使计算设备执行如权利要求11到14中任一条所述的方法。
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261673213P | 2012-07-18 | 2012-07-18 | |
US201261673208P | 2012-07-18 | 2012-07-18 | |
US201261673212P | 2012-07-18 | 2012-07-18 | |
US201261673205P | 2012-07-18 | 2012-07-18 | |
US201261673210P | 2012-07-18 | 2012-07-18 | |
US61/673,210 | 2012-07-18 | ||
US61/673,212 | 2012-07-18 | ||
US61/673,213 | 2012-07-18 | ||
US61/673,208 | 2012-07-18 | ||
US61/673,205 | 2012-07-18 | ||
PCT/US2013/032462 WO2014014520A1 (en) | 2012-07-18 | 2013-03-15 | Measuring time offsets between devices with independent silicon clocks |
USPCT/US2013/032462 | 2013-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103580770A CN103580770A (zh) | 2014-02-12 |
CN103580770B true CN103580770B (zh) | 2017-11-14 |
Family
ID=49949161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310435029.8A Active CN103580770B (zh) | 2012-07-18 | 2013-07-18 | 测量带有独立硅时钟的设备之间的时间偏差 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9571215B2 (zh) |
CN (1) | CN103580770B (zh) |
TW (1) | TWI608326B (zh) |
WO (1) | WO2014014520A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016067080A1 (en) * | 2014-10-31 | 2016-05-06 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and systems for synchronizing a communication node in a communication network |
US20160219101A1 (en) * | 2015-01-23 | 2016-07-28 | Tieto Oyj | Migrating an application providing latency critical service |
US10423468B2 (en) * | 2015-02-10 | 2019-09-24 | Red Hat, Inc. | Complex event processing using pseudo-clock |
US9891966B2 (en) | 2015-02-10 | 2018-02-13 | Red Hat, Inc. | Idempotent mode of executing commands triggered by complex event processing |
US10148412B1 (en) * | 2015-06-25 | 2018-12-04 | Marvell International Ltd. | Methods and apparatus for clock drift mitigation |
US10795881B2 (en) | 2015-12-18 | 2020-10-06 | Sap Se | Table replication in a database environment |
US10572510B2 (en) | 2015-12-21 | 2020-02-25 | Sap Se | Distributed database transaction protocol |
US9979432B2 (en) | 2016-02-01 | 2018-05-22 | Qualcomm Incorporated | Programmable distributed data processing in a serial link |
US10423567B2 (en) | 2016-02-01 | 2019-09-24 | Qualcomm Incorporated | Unidirectional clock signaling in a high-speed serial link |
US10159053B2 (en) | 2016-02-02 | 2018-12-18 | Qualcomm Incorporated | Low-latency low-uncertainty timer synchronization mechanism across multiple devices |
US9991993B2 (en) | 2016-04-01 | 2018-06-05 | Intel Corporation | Time offset validation of components with independent silicon clocks |
US10257825B2 (en) * | 2016-09-30 | 2019-04-09 | Intel Corporation | Reducing hardware precision time measurement inaccuracy |
US10977227B2 (en) * | 2017-06-06 | 2021-04-13 | Sap Se | Dynamic snapshot isolation protocol selection |
US10613578B2 (en) | 2018-03-22 | 2020-04-07 | Clock Synchronization | Clock synchronization |
US11836721B2 (en) * | 2018-06-29 | 2023-12-05 | Intel Corporation | Protection of information in an information exchange |
US10769038B2 (en) * | 2018-08-23 | 2020-09-08 | Arm Limited | Counter circuitry and methods including a master counter providing initialization data and fault detection data and wherein a threshold count difference of a fault detection count is dependent upon the fault detection data |
DE102019125529B4 (de) * | 2019-09-23 | 2021-04-01 | Beckhoff Automation Gmbh | Verfahren zur Zeitsynchronisation in einem Ethernet-basierten Netzwerk |
US11683149B2 (en) | 2020-09-11 | 2023-06-20 | Apple Inc. | Precise time management using local time base |
US11687115B2 (en) | 2021-09-22 | 2023-06-27 | Apple Inc. | Precise time management for peripheral device using local time base |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202617A (zh) * | 2006-12-12 | 2008-06-18 | 北京三星通信技术研究有限公司 | 多级设备之间的时间同步补偿方法 |
CN101388741A (zh) * | 2008-10-24 | 2009-03-18 | 中国科学院计算技术研究所 | 一种用于计算机网络的高精度时间同步设备、系统及方法 |
CN101937253A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | 用于时钟同步的机制 |
WO2011067405A1 (en) * | 2009-12-04 | 2011-06-09 | Napatech A/S | Distributed processing of data frames by mulitiple adapters using time stamping and a central controller |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434706B1 (en) | 1999-05-24 | 2002-08-13 | Koninklijke Philips Electronics N.V. | Clock system for multiple component system including module clocks for safety margin of data transfers among processing modules |
US6535926B1 (en) * | 1999-09-30 | 2003-03-18 | Rockwell Automation Technologies, Inc. | Time synchronization system for industrial control network using global reference pulses |
US7660366B2 (en) | 2004-08-30 | 2010-02-09 | Harmonic Inc. | Message synchronization over a stochastic network |
EP1653643B1 (en) * | 2004-10-27 | 2008-03-19 | Nokia Siemens Networks Gmbh & Co. Kg | Method and system for time synchronisation in a distributed communications network |
US20110035511A1 (en) * | 2009-08-07 | 2011-02-10 | Cisco Technology, Inc. | Remote Hardware Timestamp-Based Clock Synchronization |
US8700943B2 (en) | 2009-12-22 | 2014-04-15 | Intel Corporation | Controlling time stamp counter (TSC) offsets for mulitple cores and threads |
TWI411277B (zh) * | 2009-12-23 | 2013-10-01 | Ind Tech Res Inst | 網路從節點與網路系統精確時間同步之方法 |
US8307235B2 (en) | 2010-05-05 | 2012-11-06 | National Instruments Corporation | Cross controller clock synchronization |
US8316155B2 (en) * | 2010-12-17 | 2012-11-20 | Microsoft Corporation | Distributed robust clock synchronization |
-
2013
- 2013-03-15 US US13/976,154 patent/US9571215B2/en active Active
- 2013-03-15 WO PCT/US2013/032462 patent/WO2014014520A1/en active Application Filing
- 2013-07-17 TW TW102125547A patent/TWI608326B/zh active
- 2013-07-18 CN CN201310435029.8A patent/CN103580770B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202617A (zh) * | 2006-12-12 | 2008-06-18 | 北京三星通信技术研究有限公司 | 多级设备之间的时间同步补偿方法 |
CN101388741A (zh) * | 2008-10-24 | 2009-03-18 | 中国科学院计算技术研究所 | 一种用于计算机网络的高精度时间同步设备、系统及方法 |
CN101937253A (zh) * | 2009-06-30 | 2011-01-05 | 英特尔公司 | 用于时钟同步的机制 |
WO2011067405A1 (en) * | 2009-12-04 | 2011-06-09 | Napatech A/S | Distributed processing of data frames by mulitiple adapters using time stamping and a central controller |
Also Published As
Publication number | Publication date |
---|---|
TW201418934A (zh) | 2014-05-16 |
TWI608326B (zh) | 2017-12-11 |
US9571215B2 (en) | 2017-02-14 |
WO2014014520A1 (en) | 2014-01-23 |
US20140334582A1 (en) | 2014-11-13 |
CN103580770A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103580770B (zh) | 测量带有独立硅时钟的设备之间的时间偏差 | |
US6973517B1 (en) | Partition formation using microprocessors in a multiprocessor computer system | |
US6681282B1 (en) | Online control of a multiprocessor computer system | |
US7971029B2 (en) | Barrier synchronization method, device, and multi-core processor | |
US6711693B1 (en) | Method for synchronizing plurality of time of year clocks in partitioned plurality of processors where each partition having a microprocessor configured as a multiprocessor backplane manager | |
US20140348182A1 (en) | Time synchronization between nodes of a switched interconnect fabric | |
US9684583B2 (en) | Trace data export to remote memory using memory mapped write transactions | |
US8850250B2 (en) | Integration of processor and input/output hub | |
CN115550384B (zh) | 集群数据同步方法、装置、设备及计算机可读存储介质 | |
US20150127994A1 (en) | Trace Data Export to Remote Memory Using Remotely Generated Reads | |
JP2006508470A (ja) | クラスタシステムのためのハートビート機構 | |
TW201137612A (en) | Memory mirroring and migration at home agent | |
US10530562B2 (en) | Correlating local time counts of first and second integrated circuits | |
US20140348181A1 (en) | Time synchronization between nodes of a switched interconnect fabric | |
CN104573428B (zh) | 一种提高服务器集群资源有效性的方法及系统 | |
CN116541227B (zh) | 故障诊断方法、装置、存储介质、电子装置及bmc芯片 | |
US7734876B2 (en) | Protecting ownership transfer with non-uniform protection windows | |
CN109194430A (zh) | 一种基于srio的c6678分布式系统时间同步方法及系统 | |
US10528077B2 (en) | Instruction processing alignment system | |
JP4653490B2 (ja) | 相互接続を有するクラスタリングシステムおよび方法 | |
EP2687938A2 (en) | Measuring time offsets between devices with independent silicon clocks | |
CN105718349B (zh) | 跨管芯接口监听或全局观察消息排序 | |
CN110309224A (zh) | 一种数据复制方法及装置 | |
JP2005135063A (ja) | 情報処理装置及び情報処理装置の時計異常検出プログラム | |
CN114625359B (zh) | 通过同步并发网络连接的多机无耦合数字化开发平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |