PCIE内部变量

LinkUp

LinkUp作用

  • 链路是否训练起来

LinkUp置1的情况

LinkUp置0的情况

directed_speed_change

directed_speed_change 作用

  • pcie2.0新引入的,早期设备可以把此变量认为是0,因为pcie1.0只有2.5GT/s,不涉及到切速过程,所以此变量无用
  • DSP/USP是否想要发起切速
  • 如果directed_speed_change为1,则在Recovery.RcvrLock发出去的TS1中speed_change(symbol 4 bit 7)为1
  • 如果directed_speed_change为1,则在Recovery.RcvrCfg发出去的TS1中speed_change(symbol 4 bit 7)为1

directed_speed_change设置为0的情况:

  • LTSSM进入Detect状态时
  • USP在退出Detect状态后,在Configuration.Complete或者Recovery.RcvrCfg时收到的TS中表明DSP不支持高于2.5GT/s的速度,则禁止设置directed_speed_change为1
  • LTSSM进入Recovery.Speed
  • LTSSM从Recovery.RcvrLock跳转到Configuration时。具体跳转条件为在Recovery.RcvrLock时,当前工作的速度不等于协商的速度(如changed_speed_recovery为0)且任意一条lane收到的TS1中,link number和lane number与该条lane发出去的一直,且还需满足以下其一:
    • directed_speed_change为0且收到的TS1,TS2中speed_change比特为0
    • 当前速度为2.5GT/s且在收发的TS1,TS2中,2.5GT/s是最高建议的速度
  • DSP在退出Detect状态后,在Configuration.Complete或者Recovery.RcvrCfg时收到的TS中表明USP不支持高于2.5GT/s的速度,则禁止设置directed_speed_change为1
  • LTSSM在进入Recovery.Idle
  • LTSSM从Recovery.RcvrCfg跳转到Configuration
  • Recovery.RcvrCfg时,LTSSM 48ms超时进入Recovery.Idle

directed_speed_change设置为1的情况:

  • Recovery.RcvrLock状态时,如果收到8个连续的TS1中speed_change(symbol 4 bit 7),即使本端没打算切速
  • L0或者L1时,打算切速的一方必须设置为1
  • DSP在退出Detect状态后,如果收到的TS中表明USP支持高于2.5GT/s的速度,且Link Control 2寄存器中的Target Link Speed不等于当前速度,且当Link Control寄存器中的Retrain Link为1时,则必须设置directed_speed_change为1
  • 更高层想要更改速度时且满足其一:
    • 链路处于DL_Active时,双方都支持高于2.5GT/s的速度
    • 双方都支持高于8.0GT/s或更高速度时,为了在双方都支持的速度做EQ,changed_speed_recovery设置为0
    • DSP选择了替换协议(如cxl),且当前速度不是协商的可替换协议(如cxl)的工作速度
  • LTSSM在L1时,port可以从L1退出Recovery然后再到L0,到L0时允许设置为1

changed_speed_recovery

changed_speed_recovery 作用:

  • 追踪在Recovery状态,速度是否更改为协商的速度,0:没有更改协商的速度,1:更改为了协商的速度

changed_speed_recovery设置为0的情况:

  • LTSSM在Configuration.Complete
  • LTSSM在2ms超时后,从Configuration.Complete跳转到Configuration.Idle,且变量idle_to_rlock_transitioned小于ffh,且当前速度在8.0GT/s或者更高
  • LTSSM从Recovery.Speed跳转到Recovery.RcvrLock,且从L0L1进入Recovery以来,已经是第二次进入Recovery.Speed了(如changed_speed_recovery为1)
    • L0 -> Recovery.RcvrLock -> Recovery.RcvrCfg -> Recovery.Speed -> Recovery.RcvrLock(设置changed_speed_recovery为1,如新速度下不能实现symbol lock) -> Recovery.Speed -> Recovery.RcvrLock(设置changed_speed_recovery为0)

changed_speed_recovery设置为1的情况:

  • LTSSM从Recovery.Speed跳转到Recovery.RcvrLock,且已经进入过Recovery.RcvrCfg时,且链路速度已经协商好(successful_speed_negotiation为1)
    • L0 -> Recovery.RcvrLock -> Recovery.RcvrCfg -> Recovery.Speed -> Recovery.RcvrLock(设置为1)

upconfigure_capable

upconfigure_capable 作用:

  • pcie2.0新引入的,早期设备可以把此变量认为是0
  • 是否可以升lane,如果该变量为1,则在链路宽度降低后,允许在升lane

upconfigure_capable设置为0的情况:

  • LTSSM进入Detect状态时
  • LTSSM在Configuration.Complete时,且下一个状态是Configuation.Idle时,且Flit_Mode_Enabled为0,且发送和收到的8个连续的TS2中,Link Upconfigure/L0p Capability为0
  • LTSSM在Configuration.Complete 2ms超时后,且发送和收到的8个连续的TS2中,Link Upconfigure/L0p Capability为0。可以更新但是不要求

upconfigure_capable设置为1的情况:

  • LTSSM在Configuration.Complete时,且下一个状态是Configuration.Idle时,且变量Flit_Mode_Enabled为0,且发送和收到的8个连续的TS2中,Link Upconfigure/L0p Capability为1
  • LTSSM在Configuration.Complete 2ms超时后,且发送和收到的8个连续的TS2中,Link Upconfigure/L0p Capability为1。可以更新但是不要求

start_equalization_w_preset

start_equalization_w_preset作用:

  • eq过程是否基于预设值,即根据非Recovery.Equalization过程中收到TS来决定发射机的Transmitter Preset

start_equalization_w_preset设置为1的情况:

  • USP在Recovery.RcvrCfg状态,当前链路速度为2.5GT/s或者5.0GT/s,且收到的8个连续的TS2是EQ TS2,且TS2中建议支持8.0GT/s或者及更高的速度
  • USP在Recovery.RcvrCfg状态,当前链路速度为2.5GT/s或者5.0GT/s,且收到的8个TS2为EQ TS2,且TS2中建议支持32.0GT/s或者更高的速度,且两端在Configuration状态协商的EQ模式为Equalization bypass to the highest NRZ rate.
  • USP在Recovery.RcvrCfg状态,并且当前链路速度为8.0GT/s,并且收到的TS2是128b/130b EQ TS2,且双方都建议支持16.0GT/s或者更高的速度
  • USP在Recovery.RcvrCfg状态,并且当前链路速度为16.0GT/s,并且收到的TS2是128b/130b EQ TS2,且双方都建议支持32.0GT/s或者更高的速度
  • USP在Recovery.RcvrCfg状态,并且当前链路速度为32.0GT/s,并且收到的TS2是128b/130b EQ TS2,且双方都建议支持64.0GT/s或者更高的速度
  • 满足下列任意一个情况下,DSP必须把equalization设置为1:
    • 变量equalization_done_8GT_data_rate为0
    • 双方都支持16.0GT/s且变量equalization_done_16GT_data_rate为0
    • 双方都支持32.0GT/s且变量equalization_done_32GT_data_rate为0
    • 双方都支持64.0GT/s且变量equalization_done_64GT_data_rate为0
    • Link Control 3寄存器中的Performance Equalization为1
    • 基于特定必须要执行EQ过程

start_equalization_w_preset设置为0的情况:

  • DSP进入Recovery.Equalization(进入时为EQ Phase 1)
  • USP进入Recovery.Equalization(进入时为EQ Phase 0)
  • 进入Recovery.RcvrCfg时复位为0

Flit_Mode_Enabled

Flit_Mode_Enabled作用

  • 用于表明Flit模式是否协商成功

Flit_Mode_Enabled设置为1的情况

  • DSP在Configuration.Linkwidth.Accept满足下面所有条件
    • 变量LinkUp为0
    • 进入Polling状态以来,在PollingConfiguration阶段传输的TS1和TS2中速度标识符中的Flit_Mode_Supported比特为1(Symbol 4 bit 0) – 表明本端支持Flit Mode
    • Polling.Configuration跳转到Configuration时所有lane收到的TS2中Flit_Mode_Supported为1(Symbol 4 bit 0) – 表明对方也支持Flit Mode
  • USP在Configuration.Linkwidth.Accept时满足下面所有条件:
    • 变量LinkUp为0
    • 从进入Polling状态以来,在Polling状态和Configuration发送TS1,TS2中速度标识中的Flit_Mode_Supported为1 – 表明本端支持Flit Mode
    • Polling.Configuration跳转到Configuration时,所有lane收到的TS2中Flit_Mode_Supported为1 – 表明对端支持Flit Mode

Flit_Mode_Enabled设置为0的情况

  • LTSSM进入Detect状态时

L0p_capable

L0p_capable作用

  • 表明本端是否支持L0p

L0p_capable置为1的情况

  • DSP/USP 在Configuration.Complete状态时满足下面所有条件,同时把Device Status 3寄存器中的Remote L0p Supported置为1
    • 变量LinkUp=0且Flit_Mode_Supported为1
    • 设备发送TS2时,TS2中的Link Upconfigure/L0p Capability(Symbol 4 bit 6)为1 – 表明本端支持L0p
    • 收到的8个连续的TS2中,TS2中的Link Upconfigure/L0p Capability为1 – 对端支持L0p

L0p_capable置为0的情况

  • LTSSM进入Detect.Quiet时清0

SRIS_Mode_Enabled

guest
0 评论
内联反馈
查看所有评论