PCIe 均衡技术介绍(逻辑物理篇)2

简介: PCIe 均衡技术介绍(逻辑物理篇)

3.1.4 不同情况下的 EQ 需求


  以下规则适用于初次 EQ、重新 EQ、自动均衡、软件均衡。




3.1.4.1 切速中的 EQ


3.1.4.1.1 2.5 GT/s -> 8 GT/s 或 5 GT/s -> 8 GT/s


在沟通好要切速到 8 GT/s 之后、切换到 8 GT/s 之前,DSP 在 Recovery.RcvrCfg 状态采用 EQ TS2 给 USP 发送 Tx Preset 及 Rx Preset Hints(该字段仅用于 8 GT/s)。Tx Preset 及 Rx Preset Hints 是一组 Preset 的编码,并不指定具体的均衡器系数。DSP 此时发送的 8 GT/s EQ Preset 值为 USP Preset 值,存放在各条 Lane 的 EQ 控制寄存器中(图 27,图 28)。


a14bae00f0d048bd8129956c860b0484.png


▲ 图 27: Lane Equalization Control Register

99c66128424e4b5e97db3415bb2761b8.png

▲ 图 28: Lane Equalization Control Register Entry



在切换到要进行 EQ 的速率之后,USP 基于收到的 Preset 调整其均衡器系数反馈 TS1 到 DSP。若 Tx 采用 Reduced Swing,Preset 系数需要在其允许的动态范围之内。


 在切换到要进行 EQ 的速率之后,DSP 通过 TS1 发送 Preset 值。若 Tx 采用 Reduced Swing,Preset 系数需要在其允许的动态范围之内。DSP 此时发送的 8 GT/s EQ Preset 值为 DSP Preset 值,存放在各条 Lane 的 EQ 控制寄存器中。


 为了启动 8 GT/s EQ,DSP 在 2.5 GT/s 或 5 GT/s 速率的 Recovery.RcvrLock 状态通过Speed Change 位置一的 EQ TS1 请求切换速度,来通知 USP 其想要针对更高速率进行 EQ。USP 在收到 Speed Change 位置一的 EQ TS1 后,若 USP 自身也有意切到更高的速率,USP 应在 Recovery 状态响应 DSP 并提议切速到更高的速率。


3.1.4.1.2 8 GT/s -> 16 GT/s 或 16 GT/s -> 32 GT/s


当协商更高速率时,DSP 采用 128b/130b 编码发送每条 Lane 的 Tx Preset 值到 USP(没有 Rx Preset Hints,Rx Preset Hints 仅用于 8 GT/s)。在沟通好要切速到更高速率之后、切换到更高速率并进行 EQ 之前,DSP 在 Recovery.RcvrCfg 状态采用 EQ TS2 发送 Tx Preset 值。DSP 此时发送的 16 GT/s 或 32 GT/s EQ Preset 值为 USP Tx Preset 值,存放在各条 Lane 的 16 GT/s(图 29)及 32 GT/s EQ 控制寄存器(图 30)中。


9409702529e44b0cbe6a9900a1198aba.png


▲ 图 29: 16 GT/s Lane Equalization Control Register Entry


3529ae215e4b4c33992df5e2a52765c2.png


▲ 图 30: 32 GT/s Lane Equalization Control Register Entry


 除了 DSP 给 USP 发送 Preset 值,还有另一种可选的方案:在沟通好要切速到更高速率之后、却换到更高速率之前,USP 可以在 Recovery.RcvrCfg 状态采用 128b/130b 编码的 EQ TS2 给 DSP 发送初始 Tx Preset 设置。这些初始 Preset 值根据各设计自行设置。数据速率切到更高速率后,USP 将其收到的 Preset 值通过 TS1 反馈给 DSP。


若 DSP 在 Recovery.RcvrCfg 状态未收到 Preset 值,在切换到较高的数据速率后,DSP 通过 TS1 给 USP 发送 Tx Preset 值。DSP 此时发送的 16 GT/s 或 32 GT/s EQ Preset 值为 DSP Tx Preset 值,存放在各条 Lane 的 16 GT/s 及 32 GT/s EQ 控制寄存器中。


 为了启动重新 EQ,DSP 在 Recovery.RcvrLock 状态通过 Equalization Redo 置一的 TS1 请求切换速度,来通知 USP 其想要重新进行 EQ。USP 在收到 Speed Change 位置一、 Equalization Redo 置一 的 TS1 后,若 USP 自身也有意切到更高的速率,USP 应在 Recovery 状态提议切到更高的速率。




3.1.4.1.3 2.5 GT/s -> 32 GT/s 或 5 GT/s -> 32 GT/s


 只有链路支持 Bypass Equalization to Highest Data Rate 时才能直接从 2.5 GT/s 或 5 GT/s 经 EQ 到 32 GT/s。32 GT/s Capabilities Register 的 Bypass Equalization to Highest Data Rate Supported 位为 1 且 32 GT/s Control Register 的 Bypass Equalization to Highest Data Rate Disable 位为 0 时,链路支持 Bypass Equalization to Highest Data Rate。


 在沟通好要切速到 32 GT/s 之后、切换到 32 GT/s 之前,DSP 在 Recovery.RcvrCfg 状态采用 EQ TS2 给 USP 发送 Tx Preset 及 Rx Preset Hints(此处存疑,不是仅用于 8 GT/s 么?)。Tx Preset 及 Rx Preset Hints 是一组 Preset 的编码,并不指定具体的均衡器系数。DSP 此时发送的 32 GT/s EQ Preset 值为 USP Preset 值,存放在各条 Lane 的 EQ 控制寄存器中(图 30)。


 在切换到要进行 EQ 的速率之后,USP 基于收到的 Preset 调整其均衡器系数反馈 TS1 到 DSP。若 Tx 采用 Reduced Swing,Preset 系数需要在其允许的动态范围之内。


 在切换到要进行 EQ 的速率之后,DSP 通过 TS1 发送 Preset 值。若 Tx 采用 Reduced Swing,Preset 系数需要在其允许的动态范围之内。DSP 此时发送的 8 GT/s EQ Preset 值为 DSP Preset 值,存放在各条 Lane 的 EQ 控制寄存器中。


 为了启动 32 GT/s EQ,DSP 在 2.5 GT/s 或 5 GT/s 速率的 Recovery.RcvrLock 状态通过Speed Change 位置一的 EQ TS1 请求切换速度,来通知 USP 其想要针对更高速率进行 EQ。USP 在收到 Speed Change 位置一的 EQ TS1 后,若 USP 自身也有意切到更高的速率,USP 应在 Recovery 状态响应 DSP 并提议切速到更高的速率。


3.1.4.1.4 相同速率跳转的 EQ


 适用于从某一速率向相同速率跳转的重新 EQ,比如从 8 GT/s -> 8 GT/s, 16 GT/s -> 16 GT/s,32 GT/s -> 32 Gt/s。这种情况下,EQ 期间采用的初始 Preset 值等于上次对该速率进行 EQ 时采用的初始 Preset 值。


3.1.4.2 Crosslink 中的 EQ


 对于 Crosslink 链路,在速率较低的、Crosslink 初始化早期充当 DSP 角色的组件在进行 EQ 时仍然充当 DSP 的角色。


3.1.4.3 Loopback 或 Compliance 中的 EQ


 在 Loopback 状态,Loopback Master 需要在 2.5 GT/s 或 5 GT/s 速率时将 Tx/Rx 设置通过 EQ TS1 发送给 Slave,在 8 GT/s 或更高速率时通过 TS1 将 Preset 及 系数设置发送给 Slave。同样,若在 8 GT/s 或更高速率时通过 TS1 进入了 Polling.Compliance 状态,对设备进行 Compliance 测试的实体应通过 EQ TS1 给待测设备发送相关系数。



3.2 PCIe 均衡系数协商


 PCIe 在链路训练过程中进行均衡系数的协商,进行均衡技术协商的 LTSSM 状态为 Recovery.Equalization。Recovery 子状态转移如图 31 所示。


25db3ce4232648c1946b073014c92f66.png



▲ 图 31: Recovery 子状态转移


 需要注意的是,LTSSM 中的 Recovery.Equalization 的确是到 Gen3 (8 GT/s) 时才有的,但均衡不是到 Gen3 才有的。2.5 GT/s 及 5 GT/s 时,信号速率相对较低,在 Tx 端采用信号去加重即可实现较好质量的信号传输,这里的信号去加重即是均衡技术的一种。由于信号去加重时参数固定,收发端无需协商,不需要 Recovery.Equaliation 这一过程进行协商。


 数据速率上升到 8 GT/s 及以上后,信号传输面临的信号完整性问题更加突出,仅采用传统的去加重无法满足高质量的信号传输,需要收发端动态协商 Tx/Rx 参数来优化信号质量。均衡系数的协商分为 Phase 0 ~ Phase 3 四个阶段,其中 DSP 无需 Phase 0。



3.2.1 DSP


  DSP 进入 EQ 后,即为 Phase 1。进入 Phase 1 后,DSP 首先要做的是清理均衡相关寄存器状态及 LTSSM 中的相关变量,如表 4 所述。


▼ 表 4: Phase 1 阶段 DSP 部分寄存器及变量操作

image.png



3.2.1.1 Phase 1


Phase 1 阶段,DSP 发送 EC=01b 的 TS1。TS1 中,各条 Lane 根据当前速率独立设置其 Transmitter Preset 字段,同时设置与 Transmitter Preset 模式相匹配的 FS、LF、Post_cursor 系数。


   Tx Preset 选用规则


       若 Recovery.Equalization 上一状态为 Loopback.Entry,

           若 Configuration.LinkWidthStart 阶段发送 EQ TS1进入的 Loopback.Entry,则采用 EQ TS1 指定的 Preset。


           若 Configuration.LinkWidthStart 阶段发送标准 TS1进入的 Loopback.Entry,则采用相关机制选用合适的 Preset。


       否则,若最近一次 Recovery.RcvfCfg 以来 DSP 连续收到了 8 个 Tx Preset 有效的 128b/130b 编码的 EQ TS2,且当前速率为 16 GT/s 或以上,则采用收到的 EQ TS2 指定的 Preset。


       否则,若最近一次 Recovery.RcvfCfg 以来 DSP 连续收到了 8 个 Tx Preset 有效的 EQ TS2(不一定是 128b/130b 编码) 且当前速率为 32 GT/s 或以上,如果采用了 Equalization Bypass to 32 GT/s,则采用收到的 EQ TS2 指定的 Preset。


       否则,根据当前数据速率,选用 8/16/32 GT/s Lane Equalization Control Register Entry 中 Downstream port 8/16/32 GT/s Transmitter Preset 字段字段指定的值作为 TS 的 Tx Preset Value。


       如果相关控制寄存器中未指定 Tx Preset 值,则需要相关机制来指定。


   DSP 进入 Phase 1 后可以等待 500 ns 再评估接收信息,以等待 Rx 逻辑稳定。


   若 DSP 所有有效 Lane 上连续收到了两个 EC=01b 的 TS1 且 DSP 有意执行 Phase 2/Phase 3,则进入 Phase 2


       Rx 应在收到第一个 OS 之后 2 ms 内完成位锁定并识别出 OS


       若速率为 8 GT/s,Link Status 2 Register 的 Equalization 8 GT/s Phase 1 Successful 位置一


       若速率为 16 GT/s,16 GT/s Link Status Register 的 Equalization 16 GT/s Phase 1 Successful 位置一


       若速率为 32 GT/s 且 perform_equalization_for_loopback 为 0,32 GT/s Link Status Register 的 Equalization 32 GT/s Phase 1 Successful 位置一


       保存 TS 中的 LF、FS 备用,Phase 3 时用


   下一状态为 Recovery.RcvrLock 的条件:DSP 所有有效 Lane 上连续收到了两个 EC=01b 的 TS1,perform_equalization_for_loopback 为 0,且 DSP 无意执行 Phase 2/Phase 3(BER≤10-12),则进入 Recovery.RcvrLock。


       若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Phase 1 Successful,Equalization 8 GT/s Phase 2 Successful,Equalization 8 GT/s Phase 3 Successful 及 Equalization 8 GT/s Complete 置一。


       若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Phase 1 Successful,Equalization 16 GT/s Phase 2 Successful,Equalization 16 GT/s Phase 3 Successful 及 Equalization 16 GT/s Complete 置一。


       若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Phase 1 Successful,Equalization 32 GT/s Phase 2 Successful,Equalization 32 GT/s Phase 3 Successful 及 Equalization 32 GT/s Complete 置一。


   下一状态为 Loopback.Entry 的条件:perform_equalization_for_loopback 为 1,且满足下列条件之一


       所有测试 Lane 连续收到了两个 EC=01b 的 TS1 且 DSP 无意执行 Phase 2/Phase 3


       24 ms Timeout


   下一状态为 Recovery.Speed 的条件:perform_equalization_for_loopback 为 0 且 24 ms Timeout。然后


       success_speed_negotiation 清零


       若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 置一


       若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 置一


       若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 置一



3.2.1.2 Phase 2


DSP 在 Phase 2 各条 Lane 独立发送 EC=10b 的 TS1 及相关 EQ 系数。


   若进入 Phase 2 以来连续收到 2 个 EC=10b 的 TS1

       若最近收到的两个 TS1 中的 Preset 及系数合法且支持,


           收到第 2 个 TS1 后的 500 ns 内,将 Tx Pin 相关参数设置为 Rx 请求的 Preset 及系数。Tx 更新设置引起的非法电平及参数持续时间不能超过 1 ns。


           如果接受了 Rx 请求,且按照 Rx 的请求设置了发送 TS1 中的 Tx Preset、Pre-cursor、Cursor、Post-cursor 系数,那么应该把TS1 中的 Reject Coefficint Values 字段清零。


       若 Rx 请求的 Preset 及系数不合法或 Tx 不支持,那 Tx 不能采用其请求,且应该把TS1 中的 Reject Coefficint Values 字段置一,告知 Rx 其请求被驳回。


   否则 Tx 继续采用其当前的 Preset 及系数。


如 DSP 在所有已配置 Lane 上连续收到了 2 个 EC=11b 的 TS1,进入 Phase 3

   若速率为 8 GT/s,Link Status 2 Register 的 Equalization 8 GT/s Phase 2 Successful 位置一


   若速率为 16 GT/s,16 GT/s Link Status Register 的 Equalization 16 GT/s Phase 2 Successful 位置一


   若速率为 32 GT/s 且 perform_equalization_for_loopback 为 0,32 GT/s Link Status Register 的 Equalization 32 GT/s Phase 2 Successful 位置一


若 perform_equalization_for_loopback 为 1 且 32+4 ms Timeout,进入 Loopback.Entry


若 perform_equalization_for_loopback 为 0 且 32+4 ms Timeout,进入 Recovery.Speed


   success_speed_negotiation 清零


   若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 清零


   若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 清零


   若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 清零



3.2.1.3 Phase 3


   DSP 在 Phase 3 发送 EC=11b 的 TS1。


   DSP 在 Phase 3 时,每条 Lane 独立评估 EQ 参数并达到最优参数设置。若 perform_equalization_for_loopback 为 1,只在测试 Lane 上进行评估并对 Preset 及 EQ 系数进行评估优化:


       若 DSP 希望采用 Preset 值,则将其发送 TS1 中的 Tx Preset 值置为其期望的值,并把 Use Preset 位置一;若 DSP 不采用 Preset 值,则将其发送 TS1 中的 Pre-cursor、Cursor、Post-cursor 值置为其期望的值,并把 Use Preset 位置清零。一旦开始发送请求,在完成评估前至少应持续 1 us。


       DSP 的等待一段时间(500 ns + 往返时延)。在等待期间,DSP 等待 USP 完成 Tx 参数调整,DSP 可以忽略 USP 发来的数据。等待期间,若 USP 接受 DSP 的请求,USP 按照DSP 的请求其 USP 自身的 Tx 参数。等待期满,DSP 验证块对齐情况,无论是否完成块对齐,都对收到的 OS 进行评估。


       若 DSP 连续收到 2 个 TS1,TS1 中的 Tx Preset 或 Pre-cursor、Cursor、Post-cursor 与 DSP 请求的一致,且 Reject Coefficient Value 为 0,表明 USP 接受了 DSP 的参数设置请求。这些结果可以作为候选的最终结果。


       若 DSP 连续收到 2 个 TS1,TS1 中的 Tx Preset 或 Pre-cursor、Cursor、Post-cursor 与 DSP 请求的一致,且 Reject Coefficient Value 为 1,表明 USP 拒绝了 DSP 的参数设置请求。这些结果不可以作为候选的最终结果。


       若一定时间内 DSP 没有收到 USP 反馈的带有与请求参数相同的 TS1,则不能采用请求的参数。


       DSP 需要根据其评估标准及需求来复位 USP 的 EIEOS Interval Counter,通过将发送 TS1 中的 Reset EIEOS Interval Counter 位置一来复位。不可以依据接收到的 TS1 中的 Use Preset 位来判断 DSP 的请求是否被接受。


           什么时候来复位 EIEOS Counter 呢?DSP 想要一个较长的 PRBS Pattern 时可以将 Reset EIEOS Interval Count 置一,在需要 Block Alignment 的时候将其清零。


           Preset 及系数请求:Phase 3 时 DSP 发送的所有 TS1 均为请求。第一次发送的请求中,可以为新的 Preset 或系数集(请求调整),也可以为连续接收到的 2 个 EC=11b 的 TS1 中的 Preset 及系数(请求对端保留当前设置)。


       每次 Preset 或系数请求应在 2 ms 内完成。在优化的最后阶段,需要更长评估时间(时间少了无法完成评估),此时可以超过 2 ms 限制,但总体评估时间不能超过 24 ms,且最多只能 2 ms 超时两次。 如果请求者在超时期限内无法接收 Ordered Sets,则可能认为请求的设置在该 Lane 中不起作用。


       所有新的 Preset 或系数设置必须同时出现在所有配置的通道上。 如果当时不想更改设置,则允许任何给定通道继续传输当前预设或系数作为其新值。


   若当前速率为 32 GT/s 且 perform_equalization_for_loopback 为 1,满足以下条件时,下一状态为 Loopback.Entry。


       测试中的 Lane 工作在了最优设置,且所有 Lane 上连续收到了 2 个 Retimer Equalization Extent 位为 0 的 TS1。


       24+2 ms Timeout。


   若 perform_equalization_for_loopback 为 0,所有配置 Lane 工作在最优设置下,且满足以下两个条件之一(①当前速率为 8 GT/s;②所有 Lane 上连续收到了 2 个 Retimer Equalization Extent 位为 0 的 TS1),下一状态为 Recovery.RcvrLock。


       若速率为 8 GT/s,Link Status 2 Register 的 Equalization 8 GT/s Phase 3 Successful 及 Equalization 8 GT/s Complete 位置一。


       若速率为 16 GT/s,16 GT/s Link Status Register 的 Equalization 16 GT/s Phase 3 Successful 及 Equalization 16 GT/s Complete 位置一。


       若速率为 32 GT/s,32 GT/s Link Status Register 的 Eq

ualization 32 GT/s Phase 3 Successful 及 Equalization 32 GT/s Complete 位置一。


   否则,24+2 ms Timeout 后,下一状态为 Recovery.Speed。


       success_speed_negotiation 清零。


       若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 位置一。


       若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 位置一。


       若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 位置一。


3.2.2 USP


 USP 进入 EQ 后,为 Phase 0。进入 Phase 0 后,USP 首先要做的是清理均衡相关寄存器状态及 LTSSM 中的相关变量,如表 5 所述。


▼ 表 5: Phase 0 阶段 USP 部分寄存器及变量操作  



image.png


注:没有寄存器 Link Control 3 Register 中的 Perform Equalization 相关操作,这是 DSP 的。



3.2.2.1 Phase 0


Phase 0 阶段,USP 发送 EC=00b 的 TS1。TS1 中,各条 Lane 根据当前速率独立设置其 Transmitter Preset 字段,同时设置与 Transmitter Preset 模式相匹配的 FS、LF、Post_cursor 系数。


   Recovery.Equalization 上一状态为 Loopback.Entry 时,


       若 Configuration.LinkWidthStart 阶段发送 EQ TS1进入的 Loopback.Entry,则采用 EQ TS1 指定的 Preset。


       若 Configuration.LinkWidthStart 阶段发送标准 TS1进入的 Loopback.Entry,则采用相关机制选用合适的 Preset。


   若当前速率为 8 GT/s,USP 采用其在最近一次 2.5 GT/s 或 5 GT/s 时收到的 EQ TS2 中的 Tx Preset 设置 USP 的 Tx 均衡器,并反馈 TS1 给 DSP。


   若当前速率为 16 GT/s,USP 采用其在最近一次 8 GT/s 时收到的 EQ TS2 中的 Tx Preset 设置 USP 的 Tx 均衡器,并反馈 TS1 给 DSP。


   若当前速率为 32 GT/s 且 perform_euqualization_for_loopback 为 0,USP 采用其在最近一次 2.5 GT/s、5 GT/s 或 16 GT/s 时收到的 EQ TS2 中的 Tx Preset 设置 USP 的 Tx 均衡器,并反馈 TS1 给 DSP。


   若 USP 某条 Lane 收到了 Reserved 或不支持的 Tx Preset,该 Lane 可以根据具体情况采用任一支持的 Tx Preset 设置,但反馈给 DSP 的 TS1 中仍然采用其收到的无效的 Preset,并把 Reject Coefficient 置一通知 DSP 发送的 Preset 被拒绝。


   若 USP 某条 Lane 此前未收到 EQ TS2,该 Lane 可以根据具体情况采用任一支持的 Tx Preset 设置,把其采用的 Preset 及均衡器系数通过 TS1 反馈给 DSP,并把 Reject Coefficient 不置一。


   USP 进入 Phase 0 后可以等待 500 ns 再评估接收信息,以等待 Rx 逻辑稳定。

   若 USP 所有有效 Lane 上连续收到了两个 EC=01b 的 TS1,USP 进入 Phase 1。

       Rx 应在收到第一个 OS 之后 2 ms 内完成位锁定并识别出 OS。


       保存 TS 中的 LF、FS 备用,Phase 2 时用


   若 perform_equalization_for_loopback 为 1 且 12 ms Timeout,则跳转到 Loopback.Entry


   若 perform_equalization_for_loopback 为 0 且 12 ms Timeout,则跳转到 Recovery.Speed,然后


       success_speed_negotiation 清零



       若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 置一


       若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 置一


       若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 置一



3.2.2.3 Phase 2


USP 在 Phase 3 发送 EC=10b 的 TS1。


USP 在 Phase 3 时,每条 Lane 独立评估 EQ 参数并达到最优参数设置。若 perform_equalization_for_loopback 为 1,只在测试 Lane 上进行评估并对 Preset 及 EQ 系数进行评估优化:


   若 USP 希望采用 Preset 值,则将其发送 TS1 中的 Tx Preset 值置为其期望的值,并把 Use Preset 位置一;若 DSP 不采用 Preset 值,则将其发送 TS1 中的 Pre-cursor、Cursor、Post-cursor 值置为其期望的值,并把 Use Preset 位置清零。一旦开始发送请求,在完成评估前至少应持续 1 us。


   USP 的等待一段时间(500 ns + 往返时延)。在等待期间,USP 等待 DSP 完成 Tx 参数调整,USP 可以忽略 DSP 发来的数据。等待期间,若 DSP 接受 USP 的请求,DSP 按照 USP 的请求其 DSP 自身的 Tx 参数。等待期满,USP 验证块对齐情况,无论是否完成块对齐,都对收到的 OS 进行评估。


   若 DSP 连续收到 2 个 TS1,TS1 中的 Tx Preset 或 Pre-cursor、Cursor、Post-cursor 与 DSP 请求的一致,且 Reject Coefficient Value 为 0,表明 DSP 接受了 USP 的参数设置请求。这些结果可以作为候选的最终结果。


   若 DSP 连续收到 2 个 TS1,TS1 中的 Tx Preset 或 Pre-cursor、Cursor、Post-cursor 与 DSP 请求的一致,且 Reject Coefficient Value 为 1,表明 DSP 拒绝了 USP 的参数设置请求。这些结果不可以作为候选的最终结果。


   若一定时间内 USP 没有收到 DSP 反馈的带有与请求参数相同的 TS1,则不能采用请求的参数。


   USP 需要根据其评估标准及需求来复位 DSP 的 EIEOS Interval Counter,通过将发送 TS1 中的 Reset EIEOS Interval Counter 位置一来复位。不可以依据接收到的 TS1 中的 Use Preset 位来判断 USP 的请求是否被接受。


       什么时候来复位 EIEOS Counter 呢?USP 想要一个较长的 PRBS Pattern 时可以将 Reset EIEOS Interval Count 置一,在需要 Block Alignment 的时候将其清零。


       Preset 及系数请求:Phase 2 时 USP 发送的所有 TS1 均为请求。第一次发送的请求中,可以为新的 Preset 或系数集(请求调整),也可以为连续接收到的 2 个 EC=10b 的 TS1 中的 Preset 及系数(请求对端保留当前设置)。


   每次 Preset 或系数请求应在 2 ms 内完成。在优化的最后阶段,需要更长评估时间(时间少了无法完成评估),此时可以超过 2 ms 限制,但总体评估时间不能超过 24 ms,且最多只能 2 ms 超时两次。 如果请求者在超时期限内无法接收 Ordered Sets,则可能认为请求的设置在该 Lane 中不起作用。


   所有新的 Preset 或系数设置必须同时出现在所有配置的通道上。 如果当时不想更改设置,则允许任何给定通道继续传输当前预设或系数作为其新值。


若 perform_equalization_for_loopback 为 1,测试中的 Lane 工作在了最优设置,且所有 Lane 上连续收到了 2 个 Retimer Equalization Extent 位为 0 的 TS1,下一状态为 Phase 3。


若 perform_equalization_for_loopback 为 0,所有配置 Lane 工作在最优设置下,且满足以下两个条件之一(①当前速率为 8 GT/s;②所有 Lane 上连续收到了 2 个 Retimer Equalization Extent 位为 0 的 TS1),下一状态为 Recovery.RcvrLock。


   若速率为 8 GT/s,Link Status 2 Register 的 Equalization 8 GT/s Phase 2 Successful 位置一。


   若速率为 16 GT/s,16 GT/s Link Status Register 的 Equalization 16 GT/s Phase 2 Successful 位置一。


   若速率为 32 GT/s,32 GT/s Link Status Register 的 Equalization 32 GT/s Phase 2 Successful 位置一。


若 perform_equalization_for_loopback 为 1 且 24+2 ms Timeout,下一状态为 Loopback.Entry。


否则,24+2 ms Timeout 后,下一状态为 Recovery.Speed。


   success_speed_negotiation 清零。


   若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 位置一。


   若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 位置一。


   若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 位置一。




3.2.2.4 Phase 3


USP 在 Phase 3 各条 Lane 独立发送 EC=11b 的 TS1 及相关 EQ 系数。


   若进入 Phase 3 以来连续收到 2 个 EC=11b 的 TS1

       若最近收到的两个 TS1 中的 Preset 及系数合法且支持,

           收到第 2 个 TS1 后的 500 ns 内,将 Tx Pin 相关参数设置为 Rx 请求的 Preset 及系数。Tx 更新设置引起的非法电平及参数持续时间不能超过 1 ns。


           如果接受了 Rx 请求,且按照 Rx 的请求设置了发送 TS1 中的 Tx Preset、Pre-cursor、Cursor、Post-cursor 系数,那么应该把TS1 中的 Reject Coefficint Values 字段清零。


       若 Rx 请求的 Preset 及系数不合法或 Tx 不支持,那 Tx 不能采用其请求,且应该把TS1 中的 Reject Coefficint Values 字段置一,告知 Rx 其请求被驳回。


   否则 Tx 继续采用其当前的 Preset 及系数。


如 USP 在所有已配置 Lane 上连续收到了 2 个 EC=00b 的 TS1,进入 Recovery.RcvrLock


   若速率为 8 GT/s,Link Status 2 Register 的 Equalization 8 GT/s Phase 3 Successful 及 Equalization 8 GT/s Complete 位置一。


   若速率为 16 GT/s,16 GT/s Link Status Register 的 Equalization 16 GT/s Phase 3 Successful 及 Equalization 16 GT/s Complete 位置一。


   若速率为 32 GT/s,32 GT/s Link Status Register 的 Equalization 32 GT/s Phase 3 Successful 及 Equalization 32 GT/s Complete 位置一。


若 perform_equalization_for_loopback 为 1 且 USP 在所有测试 Lane 上连续收到了 2 个 EC=00b 的 TS1 或 32+4 ms Timeout,进入 Loopback.Entry。


否则,32+2 ms Timeout 后,下一状态为 Recovery.Speed。


   success_speed_negotiation 清零。


   若当前数据速率为 8 GT/s,Link Status 2 Register 中的 Equalization 8 GT/s Complete 位置一。


   若当前数据速率为 16 GT/s,16 GT/s Link Status Register 中的 Equalization 16 GT/s Complete 位置一。


   若当前数据速率为 32 GT/s,32 GT/s Link Status Register 中的 Equalization 32 GT/s Complete 位置一。



3.2.3 Preset 及 Coefficient 响应


PCIe 组件调整对端 Tx 以及评估自身 Rx 及对端 Rx 的算法不一而论。PCIe 组件可以请求切换到任意 Lane 数目,每条 Lane 请求的设置也不尽相同。请求可以是 Preset 值,也可以是一组满足 Preset 范围的具体的均衡器系数。每个组件都应确保在精调结束后(USP@Phase 2,DSP@Phase 3),链路对端每条 Lane 的 Tx 设置满足 PCIe 在电气层面的需求。


 PCIe 组件收到调整其 Tx 设置的请求后,必须对请求进行评估并有所反应。若 PCIe 组件 Tx 工作在 Full-swing 模式且收到了有效的 Preset 请求,其必须反映在具体的 Tx 均衡器设置中,并在接下来发送的 TS1 中反馈 Preset 及系数。若 PCIe 组件 Tx 工作在 Reduced-swing 模式且收到了一个支持的 Preset 值,其必须反映在具体的 Tx 均衡器设置中,并在接下来发送的 TS1 中反馈 Preset 及系数。工作于 Reduced-swing 模式的 Tx 可以拒绝不支持的 Preset 请求。


对于调整均衡器系数的请求,可接受亦可拒绝。若针对某条 Lane 的系数设置请求被接受,其必须反应在 Tx 设置及接下来发送的 TS1 中。若针对某条 Lane 的系数设置请求被拒绝,Tx 设置不做改变,但接下来发送的 TS1 中必须反映请求的系数,并将 Reject Coefficient 位置一。对于其他响应系数请求,在上一 Preset 值发送完之后,发送的 TS1 的 Preset 字段不做改变。只有请求的系数不符合 FIR 系数约束规则时,组件才能拒绝相关请求。


 若某条 Lane 收到的 Preset 值为 Reserved 或 Polling.Compliance、Loopback、EQ Phase 0/1 不支持的值,该 Lane 可以根据具体情况采用任一支持的 Tx Preset 设置。后续在 Compliance Pattern 或有序集中反馈的 Preset 仍然为其收到了 Reserved 或不支持的 Tx Preset 值,而非该 Lane 在具体实现时真实使用的 Preset 值。


例如,USP 某条 Lane 在 Recovery.RcvrCfg 状态收到了 Preset 值为 1111b (该值为 Reserved)的 EQ TS2,其可以在切换速率到 8 GT/s 后采用任意支持的 Tx Preset 值作为其 Tx 设置,但其在 Phase 0/1 阶仍然反馈 Preset 值为 1111b 的 TS1。



3.2.4 start_equalization_w_preset


  1. DSP 进入 EQ 后,start_equalization_w_preset 清零;
  2. USP 进入 EQ 后,start_equalization_w_preset 清零;
  3. 进入 Recovery.RcvrCfg 后,start_equalization_w_preset 清零,


a. DSP start_equalization_w_preset 再置一


b. USP 满足以下情况时 start_equalization_w_preset 置一:


1) 若当前 2.5 GT/s 或 5 GT/s,且最大支持 8 GT/s


2) 若当前 2.5 GT/s 或 5 GT/s,最大支持 32 GT/s 且 bypass_to_highest_rate


3) 若当前 8 GT/s,且支持 16 GT/s(最大不一定是 16 GT/s)


4) 若当前 16 GT/s,最大支持 32 GT/s



那当前 USP 为 2.5 GT/s 或 5 GT/s,最大支持 16 GT/s 时,start_equalization_w_preset 该怎么处理?当前 2.5 GT/s 或 5 GT/s,最大支持 16 GT/s 时,需要经过两次调速。


   第一次进入 Recovery.RcvrLock 后收到的 TS 中显示最大支持 8 GT/s,符合规则 (i),start_equalization_w_preset 置一,Gen1 -> Gen3 做一次 EQ 进行第一次调速,进入 EQ 后 start_equalization_w_preset 清零 。


   第二次进入 Recovery.RcvrLock 后收到的 TS 中才切为最大支持 16 GT/s,符合规则 (iii),start_equalization_w_preset 置一,Gen3 -> Gen4 做一次 EQ 进行第二次调速,进入 EQ 后 start_equalization_w_preset 清零 。


 也就是说,切速过程为 Gen1 -> Gen3 -> Gen4,每次切速都做一次 EQ。




3.3 EQ 举例


  1. 若双方支持最大速率为 8 GT/s,EQ 过程在完成 8 GT/s EQ 后结束。


  1. 若双方支持最大速率为 16 GT/s,在完成 8 GT/s EQ 后进行 16 GT/s EQ,然后结束 EQ。


  1. 若当前处于 8 GT/s(16 GT/s),要求重复进行 8 GT/s EQ(16 GT/s),由于链路没必要返回 2.5 GT/s 或 5 GT/s (或 8 GT/s)重新发送一次与之前相同的 Preset,可以跳过 Phase 0。


  1. 若 DSP 根据平台链路情况觉得没必要对 Tx 进行精调,也可以跳过 Phase 2 及 Phase 3。



3.3.1 速率 8 GT/s Equalization Flow


  8 GT/s 时,DSP 与 USP 均衡系数协商过程如图 32 所示。

7d00282b98da4ecfa3e16c21e4835488.png


▲ 图 32: 8 GT/s Equalization Flow



  1. EQ 之前:在 2.5 GT/s 速率时,双方协商进行速率切换,DSP 提议最高支持 8 GT/s 并与 USP 交换 8 GT/s 的 Preset 值。


  1. EQ Phase 0:EC=0。此时速率为 8 GT/s。USP 回传 Preset 及 Coefficients 给 DSP。 DSP 没有 Phase 0 。


  1. EQ Phase 1:EC=1。DSP 及 USP 发送其 LF (Low Frequency,symbol7)、FS (Full Swing,symbol8) 、Post-cursor (symbol9) 给对端 ,在 Phase 2/3 使用。每隔 32 TS1 发送一次 EIEOS。


  1. EQ Phase 2:EC=2。USP 作为 Master,调节 DSP 的 Tx Preset 及系数,确保 USP 输入链路满足 USP 的电气需求。具体可分为 Preset 调节及 coefficient 调节。USP 每隔 32 TS1 发送一次 EIEOS,DSP 根据 USP 请求在 65536 TS1 时间内至少发送一次 EIEOS。


  1. EQ Phase 3:EC=3。DSP 作为 Master,调节 USP 的 Tx Preset 及系数,确保 DSP 输入链路满足 DSP 的电气需求。具体可分为 Preset 调节及 coefficient 调节。DSP 每隔 32 TS1 发送一次 EIEOS,USP 根据 DSP 请求在 65536 TS1 时间内至少发送一次 EIEOS。


  1. EQ 完成后:EC=0。LTSSM 经 Recovery.RcvrLock -> Recovery.RcvrCfg -> Recovery.Idle -> L0。进 L0 前每隔 32 TS1/TS2 发送一次 EIEOS。



3.3.2 速率 16 GT/s Equalization Flow


7afa3db7360a49eaaa748133801c5de1.png


▲ 图 33: 16 GT/s Equalization Flow


3.3.3 Equalization Bypass Flow


  只针对最高速率进行 EQ 的流程如图 34 所示。

c6200748625344309e0b176b3f18c7d0.png


▲ 图 34: Equalization Bypass Flow




参考


  1. PCI ExPress Base Spec 5.0, Chapter 4.2.3, Chapter 4.2.6.4.2, Chapter 8.3.3, …


  1. PCIe Express Technology, Mindshare Inc, Chapter 13


  1. SNPS PHY databook,chapter 5.11


  1. 芯片中的数学——均衡器EQ和它在高速外部总线中的应用


  1. pcie equalization学习笔记


  1. PCIE 3.0中使用的动态均衡概念


  1. 理论篇|如何实现PCIe Gen3/Gen4接收端链路均衡测试?


  1. 实践篇|如何实现PCIe Gen3/Gen4接收端链路均衡测试?)


  1. PCIe Electrical PHY(2)-SerDes中的均衡技术



目录
相关文章
PCIe 均衡技术介绍(逻辑物理篇)
PCIe 均衡技术介绍(逻辑物理篇)
2680 0
PCIe 均衡技术介绍(逻辑物理篇)
|
芯片
PCIe 均衡技术介绍(电气物理篇)
PCIe 均衡技术介绍(电气物理篇)
5802 0
PCIe 均衡技术介绍(电气物理篇)
|
存储 监控
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一第2章
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第2章 ,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1263 0
|
存储 测试技术 数据中心
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一第3章
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第3章 ,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1182 0
|
存储 虚拟化
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一第1章
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.1节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1382 0
|
存储 虚拟化
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.5.2 vMotion
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.5.2节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区
1437 0
|
存储 虚拟化
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.2.3 网络
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.2.3节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1460 0
|
存储 测试技术
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一2.4.3 网络
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第2章 ,第2.4.3节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1232 0
|
存储 资源调度
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.5.3 分布式资源调度
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第1章 ,第1.5.3节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1447 0