【PCIE】Precision Time Measurement (PTM)

1.PTM 功能介绍

Precision Time Measurement(PTM)是PCIE4.0 之后引入的功能。它可以让具有独立本地计时时钟的不同组件实现精确的时间协调。这是通过使用独立于本地时间时钟的共享PTM Master time实现的。PTM Root负责维护PTM Master time,并使组件能够计算其本地时间与PTMMaster time之间的关系。
增强精度时间管理(ePTM)是PTM技术的进一步发展,它对PTM设备提出了额外的要求。ePTM Capable位指示设备是否支持ePTM技术。这种技术在PCI Express® Base Specification Revision 5.0 Version 1.0中进行了描述。

PTM 定义了以下概念:

  • PTM 请求者 - 一种能够使用 PTM 作为消费者与端口或上游端口关联的功能。
  • PTM 响应者 - 一种能够使用 PTM 提供与端口或 RCRB 关联的 PTM 主时间的功能。
  • 时间源 - 与 PTM 响应者关联的本地时钟。
  • PTM Root - PTM 层次结构的 PTM 主时间来源。 PTM 根必须也是时间源,通常也是 PTM 响应者。每个 PTM 根向所有 PTM 层次结构提供单个 PTM 主时间:与单个 PTM 根相关联的一组 PTM 请求者。

下图展示了使用 PTM 的一些示例系统拓扑结构。这些仅是说明性的示例,不意味着任何限制或要求。
在这里插入图片描述

注意
PCIe Retimers 对 PTM(Packet Timestamping Mechanism)准确性的影响:
当使用 Retimers 时,会引入不对称的链路延迟,从而影响 PTM 的准确性。而对称的链路延迟可以最大程度地保证 PTM 的准确性。如果不对称性越大、变化越大,对 PTM 的影响就越大。因此,在选择使用 Retimer 实现 PTM 时,需要仔细查阅制造商的文档来确定 Retimer 实现是否适用于 PTM。

2.PTM 链路协议

在使用 PTM(Packet Timestamping Mechanism)在链路上的两个组件之间进行通信时,代表 PTM 请求者的上游端口向代表 PTM 响应者的下游端口发送 PTM 请求。
PTM 链路协议
上图中的t1、t2、t3和t4表示每个端口在发送和接收PTM消息时本地捕获的时间戳。与每个端口关联的组件将这些时间戳存储在内部寄存器中,以便在第二个PTM对话中使用,以及后续的PTM对话。上行端口代表PTM请求方发起PTM对话,发送PTM请求消息。下行端口代表PTM响应方,具有对PTM主时间的了解或访问(直接或间接)。
在每个对话期间,下行端口根据在先前的PTM对话中存储的时间戳填充PTM ResponseD消息,如第6.22.3.2节所定义。一旦每个组件都具有来自前一个对话的历史时间戳,与上行端口相关联的组件可以将其时间戳与在PTM ResponseD消息中传递的时间戳相结合,使用以下公式计算PTM主时间:

PMT 主时间 t1 ′ = ((t4 − t1) − (t3 − t2)) / 2

值t1、t2、t3、t4和t2’表示在上图所示的PTM对话期间捕获的时间戳。支持PTM的组件通常会记录这些时间戳计算的结果,并可能通过特定于实现的方式将其提供给软件。在本文档中,将该结果计时信息称为组件的“PTM上下文”。
对于实现PTM的交换机,交换机本身内部的时间同步机制是根据具体应用实现的。

PTM原理和操作
在PTM对话期间捕获的时间戳使得可以计算PTM请求方和PTM响应方之间的时间关系。值(t3-t2)测量给定PTM对话中PTM响应方使用的时间。时间(t4-t1)是从请求到响应的时间。因此((t4-t1)-(t3-t2))有效地给出两个组件之间往返消息传输的时间,而该数量除以2近似于链路延迟——即t1和t2之间的时间差。假定从PTM请求方到PTM响应方再返回的链接传输时间是对称的,这通常是一个很好的假设(另请参阅有关PTM时间戳捕获机制的实现注释)。
PTM 的例子:
下图说明了使用PTM的简单设备层次结构。每个上行端口启动PTM对话以建立其本地时间和根端口提供的PTM主时间之间的关系。在这个例子中,交换机在其上行端口启动PTM对话,以获取PTM主时间,用于满足其下行端口接收到的PTM请求消息。该交换机使用特定于实现的方式将PTM主时间从其上行端口传输到其下行端口。支持PTM的组件可以使其PTM上下文对软件进行检查,使软件能够在本地时间和PTM主时间之间转换计时信息。反过来,这种能力使得软件能够以非常精确的精度协调多个组件之间的事件。同样,强烈建议实现PTM的平台也向软件提供PTM主时间。
在这里插入图片描述

3.配置和操作的要求

如果与上行端口相关联的功能的PTM控制寄存器中未设置PTM使能位,则软件不能在其中设置PTM控制寄存器中的PTM使能位,除非链接上的关联下行端口已经在其关联的PTM控制寄存器中设置了PTM使能位。支持PTM的功能通过PTM扩展能力结构的存在进行指示。并不要求层次结构中的所有端点都支持PTM,也不要求在所有支持PTM的端点中启用PTM。如果一个不支持PTM的端口或者当PTM使能位被清除时,一个下行端口接收到了PTM消息,则该消息必须被视为不支持的请求。这是与接收端口相关联的报告错误(参见第6.2节)。对于支持PTM的上行端口而言,如果PTM响应的PTM使能位被清除,则必须默默地丢弃它。

PTM主时间必须满足以下行为要求:

  • 时间值必须单调递增,并且严格递增。
  • 感知到的粒度不能大于PTM能力寄存器中的本地时钟粒度字段报告的值。
  • 感知到的时间必须不晚于PTM根处理其第一个PTM请求消息的时间。

通过图1 定义了时间戳捕获的规则:

  • PTM请求者在发送PTM请求消息时,必须更新其存储的t1时间戳,即使该传输是重播。
  • PTM响应者在接收PTM请求消息时,必须更新其存储的t2时间戳,即使接收到的TLP是重复的。
  • PTM响应者在传输PTM响应或ResponseD消息时,必须更新其存储的t3时间戳,即使该传输是重播。
  • PTM请求者在接收到PTM响应消息时,必须更新其存储的t4时间戳,即使接收到的TLP是重复的。
    • 时间戳必须基于框架TLP的STP符号或令牌,就好像在端口引脚上观察该符号或令牌的第一个比特位。通常,这将需要一种特定于实现的调整,以补偿无法直接测量实际引脚时间的能力,因为时间通常会在Rx或Tx路径中的某个内部点测量。此测量的准确性和一致性不受本规范的限制,但强烈建议实现最高实用级别的准确性和一致性。

3.1 PTM 请求者

通过设置 the PTM Capability register中的PTM Requester Capable bit 来表明支持 PTM 请求者角色。
PTM请求者只有在启用PTM时才允许请求PTM主时间。指导PTM请求者发出这种请求的机制是由实现特定的。

  • 上游端口通过PTM对话框获取PTM主时间,如PCIE5.0 spec的第2.2.8.10节所述。
  • RCiEP请求PTM主时间的机制是实现特定的。
  • 一旦发出PTM请求消息,上游端口在收到PTM响应消息、PTM ResponseD消息、复位或100μs内没有来自下游端口的相应PTM消息之前,不能再发出另一个PTM请求消息。
  • 收到PTM响应后,上游端口必须等待至少1μs才能再次发出PTM请求消息。
  • 对于包含多个PTM请求者的多功能设备(MFDs),与该MFD相关联的上游端口必须在每个PTM上下文刷新期间发出单个PTM对话框。 MFD内的PTM请求者使用此单个设备范围的PTM对话框维护其各自的PTM上下文。从一个PTM对话框中刷新多个PTM上下文的机制是实现特定的。
  • 强烈建议上游端口在发生以下任何情况时使其内部PTM上下文无效。如果支持ePTM,则在发生以下任何情况时,上游端口必须使其内部PTM上下文无效:
    • 重播PTM请求。
    • 收到重复的PTM ResponseD TLP。
    • PTM主时间与上游端口本地时间之间的关系发生变化,根据实现特定的标准确定。例如,这可能是由于转换为非D0状态或由于累积的PPM漂移而发生的。
      这些事件被归类为“本地时间失效事件”,入下图所示。
      如果支持 ePTM,那么在重放 PTM TLP 后,上游端口必须使其 PTM 上下文无效,直到成功完成两个连续的 PTM 对话并且没有重发。
      在这里插入图片描述

应用指导
接收到重复的 TLP 时进行 PTM 无效化
在数据链路层中,重复的 TLP(Transaction Layer Packets)会被检测并且丢弃,而在事务层中,PTM(Packet Transmission Layer)消息会被识别。在某些实现中,很难或者过于复杂来区分一个重复的 PTM TLP 和其他重复的 TLP。因为上游端口被允许根据特定的实现标准来使其内部的 PTM 上下文失效,所以一个 PTM 请求者可以在接收到任何重复的 TLP 以及重复的 PTM TLP 时使其内部的 PTM 上下文失效。同样,如果支持 ePTM,则一个 PTM 响应者可以在接收到任何重复的 TLP 时使其历史时间戳(t2 - t3)失效。

3.2 PTM 响应者

  • 支持 PTM Responder 角色需要在 PTM Capability 寄存器中设置 PTM Responder Capable 位。
  • Switches 和 Root Complexes 允许实现 PTM Responder 角色。
    • PTM capable Switch,在通过设置与 Switch Upstream Port 相关的 PTM Control 寄存器的 PTM Enable 位启用 PTM 后,必须响应其所有 Downstream Ports 收到的所有 PTM Request Messages。
    • Root Complexes 将 PTM Master Time 传递给 RCiEPs 的机制是实现特定的。
  • PTM Responders 必须按照以下方式填充 PTM ResponseD Messages(参考图 1 和相应的实现说明):
    • PTM Master Time 字段是一个 64 位值,包含当前 PTM Dialog 的 PTM Master Time 值。在图 6-24 中,对于第二个 PTM dialog,这是 t2’ 时刻的 PTM Master Time。
    • Propagation Delay 字段是一个 32 位值,包含收到 PTM Request Message 和发送前一个 PTM dialog 的 PTM Response Message 之间的间隔。在图 1 中,对于第二个 PTM dialog,这是在第一个 PTM dialog 期间捕获的 t2 和 t3 之间的时间间隔。
    • 两个字段的单位均为 1 ns。
    • 具有多个 Downstream Ports 的 PTM Responder 必须使用来自单个 PTM Root 的值填充所有 PTM Ports Downstream 端口上的所有 PTM ResponseD Messages。
  • 作为 PTM Responders 的 Switch Downstream Ports 和 Root Ports 必须根据以下规则响应其收到的每个 PTM Request Message,使用 PTM Response 或 PTM ResponseD:
    • PTM Responder 必须在先收到 PTM Request Message 后才能发送 PTM Response 或 PTM ResponseD Message。
    • 在收到 PTM Request Message 后,PTM Responder 必须在 10 微秒内尝试发出 PTM Response 或 PTM ResponseD Message。
    • 当 Downstream Port 没有有效的历史时间戳(t3 - t2)来满足 PTM Request Message 时,PTM Responder 必须发出 PTM Response
    • 如果支持 ePTM,则 PTM Responder 必须在重放任何 PTM Response 或 PTM ResponseD 后立即使其历史时间戳(t3 - t2)无效。在收到任何重复的 PTM Request 后,PTM Responder 必须使其历史时间戳(t3 - t2)无效。
  • 当 PTM 响应者已经存储了填充 PTM ResponseD 消息所需的值,包括历史时间戳(t3 - t2)和在收到最近的 PTM 请求消息时的 PTM 主时间(时间 t2’)时,必须发出 PTM ResponseD。
  • 当 PTM 响应者已经存储了历史时间戳(t3 - t2),但需要从其他地方请求 PTM 主时间时,可以发出 PTM Response 消息。在这种情况下,如果检索所需的 PTM 主时间需要超过 10 微秒,则可以在响应 PTM 请求消息时发出 PTM Response 消息。
  • PTM 响应者传输的历史时间戳和 PTM 主时间值的感知粒度不能超过 PTM Capability 寄存器中报告的本地时钟粒度字段。

3.2 PTM 时间源 - 针对PCIE 交换机的特殊要求

除了 PTM 请求者和 PTM 响应者角色的要求之外,交换机必须遵循以下要求:

  • 当上行端口与多功能设备相关联时,只允许与该上行端口相关联的单个功能实现 PTM 扩展能力结构。对于交换机,所有与交换机相关的 PTM 功能必须通过该结构进行控制。实现 PTM 扩展能力结构的功能不必是交换机上行端口功能。
  • 交换机的 PTM 扩展能力结构必须指示支持 PTM 请求者和 PTM 响应者角色。
  • 上行端口中的 PTM 扩展能力控制该上行端口中的所有交换机。
  • 交换机可以作为 PTM 根,或者在其上行端口发出 PTM 请求以获取用于满足其下行端口接收的 PTM 请求的 PTM 主时间。在后一种情况下,交换机必须考虑交换机内部延迟。
  • 交换机可以维护本地 PTM 上下文,用于满足其下行端口接收的 PTM 请求。
  • 不作为 PTM 根的交换机必须在其上行端口上的最后一次 PTM 对话后不超过 10 毫秒无效化其本地上下文。然后,交换机必须在其下行端口上发出进一步的 PTM ResponseD 消息之前刷新其本地 PTM 上下文。如果实现特定的方法保证了交换机的本地时钟与 PTM 主时间相位锁定,则可以选择不定期刷新的要求。
  • 为了维护本地 PTM 上下文而实现本地时钟的任何交换机都必须将该时钟的粒度报告为 PTM 能力结构(PCIE5.0 spec 第 7.9.16 节)中定义的粒度。

应用指导
PTM 时间戳捕获机制
PTM使用了数据链路层和事务层的服务。为了保证准确性,时间测量应尽可能接近物理层。相反,消息协议本身应该属于事务层。PTM消息协议适用于单个链接,其中上行端口是请求者,下行端口是响应者。
在这里插入图片描述
上图说明了如何选择合适的时间戳捕获点。对于某些实现,事务层和数据链路层中的逻辑是非确定性的。实现细节和当前条件对特定数据包遇到任何特定处理步骤的时间有相当大的影响。这使得如果在更高的层次上捕获时间戳,则实际上不可能捕获准确记录特定物理事件时间的时间戳。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值