博客
关于我
PCI Express学习篇:Power Management(二)
阅读量:794 次
发布时间:2023-02-26

本文共 3515 字,大约阅读时间需要 11 分钟。

PCIe L1低功耗状态详解

PCIe(PCI Express)作为现代计算机体系的重要组成部分,其低功耗状态L1(Low Power State)能够显著降低系统功耗。在本文中,我们将详细探讨PCIe L1状态的相关知识,包括如何进入L1状态、退出L1状态,以及物理层在L1状态下的具体实现。

一、进入L1状态

PCIe L1状态是指PCI Express端口进入低功耗状态的最高级别。在这种状态下,Transmitter(TX)和Receiver(RX)物理层同时进入Electrical Idle(EI)状态,LTSSM(Link Training and Status State Machine)也进入L1状态。

1. 进入L1状态的方法

PCIe L1状态的进入主要通过以下两种方法:PCI-PM(PCI Power Management)和ASPM(Active State Power Management)。

(1)PCI-PM方法

PCI-PM方法是PCIe L1状态进入的最常见方式。具体流程如下:

  • Upstream Component(RC)发送CfgWr写入PMCSR的PowerState:RC通过发送CfgWr命令,配置Downstream Component(EP)的Power Management Controller(PMCSR)。

  • Downstream Component(EP)接收CfgWr后,LTSSM进入L1状态:EP在接收到CfgWr后,会执行进入L1状态所需的准备工作。

  • DLLP包的交互

    • EP接收到PM_Enter_L1 DLLP包后,执行进入Electrical Idle前的准备工作。
    • RC接收到PM_Request_Ack DLLP包后,也会执行类似的准备工作。
  • 双方物理层进入Electrical Idle状态:TX和RX同时进入Electrical Idle状态,LTSSM最终进入L1状态。

  • (2)ASPM方法

    ASPM方法(Active State Power Management)主要用于PCIe L1状态的快速进入。ASPM方法的具体实现分为以下三种类型:

    • 方法一:支持ASPM L0s,链路空闲一段时间后进入L0s,随后再空闲一段时间后进入L1。这种方法仅需软件配置ASPM相关状态的使能即可。

    • 方法二:支持ASPM L1,链路空闲一段时间后直接进入L1。同样只需软件配置相关状态即可。

    • 方法三:支持ASPM L1,软件通过配置USP的寄存器直接发起DLLP包,不需要等待超时后再发起。

    需要注意的是,ASPM方法的具体实现方式取决于USP和DSP之间的协商过程。

    进入L1状态的协商过程

    无论是PCI-PM方法还是ASPM方法,进入L1状态都需要以下协商过程:

  • USP发起请求:USP通过上述三种方法中的一种发起请求,执行进入Electrical Idle前的准备工作。

  • DLLP包的交互

    • PM_Active_State_Request_L1 DLLP(USP→DSP):请求DSP进入L1状态。
    • PM_Request_Ack DLLP(DSP→USP):DSP回应USP进入L1状态的确认。
    • RC接收到DLLP后也会执行进入Electrical Idle前的准备工作。
  • L1状态确认:双方物理层同时进入Electrical Idle状态,LTSSM进入L1状态。

  • 二、退出L1状态

    退出L1状态是指PCIe端口从低功耗状态返回到活动状态的过程。退出L1状态的方法主要有以下两种:

    1. Configuration Request方法

    方法一:DSP发起Configuration Request退出

  • 软件发起CfgWr命令:软件配置USP的PMCSR PowerState为D0。

  • 硬件具体过程

    • DSP(RC)的上层可能有pending TLP,导致DSP PHY的PowerState改变,退出Electrical Idle状态。
    • DSP发送TS1/TS2序列,LTSSM进入recovery状态。
    • USP(EP)检测到退出Electrical Idle状态后,同样发送TS1/TS2序列,LTSSM进入recovery状态。
  • CfgWr成功配置:双方重新link到L0状态,PMCSR中的PowerState配置成功应用到USP(EP)的PMCSR。

  • 2. USP发起PME Message退出

  • USP配置寄存器发起PME Message:USP通过配置寄存器发送PME Message。

  • 硬件具体过程

    • USP(EP)的上层可能有pending TLP,导致USP PHY的PowerState改变,退出Electrical Idle状态。
    • USP发送TS1/TS2序列,LTSSM进入recovery状态。
    • DSP(RC)检测到退出Electrical Idle状态后,同样发送TS1/TS2序列,LTSSM进入recovery状态。
  • PME Message成功发送:双方重新link到L0状态,PME Message成功发送给DSP(RC)。

  • 隐式路由和软件处理

    • PME Message隐式路由到RC,RC收到后传递给Power Management Controller。
    • Power Management Controller通过中断通知软件。
  • 软件清除配置:软件利用PME Message包中的Requester ID发送CfgRd命令,清除PMCSR中的PME_Status配置,并将PowerState配置为D0。

  • 三、物理层进入和退出L1的过程

    L1状态下,Transmitter和Receiver同时进入Electrical Idle状态。Electrical Idle状态的具体实现对于Transmitter和Receiver有以下要求:

    1. Transmitter进入Electrical Idle

    Transmitter进入Electrical Idle前,需要发送EIOS(Electrical Idle Output Signal),并将TX driver设为输入三态模式。EIOS的具体格式和发送要求可参考PCIe Spec 5.0 Table 4-10和Table 4-11。

    • EIOS的格式:见PCIe Spec 5.0 Table 4-10和Table 4-11。
    • 发EIOS的目的:Receiver通过EIOS预知接下来需要进入EI状态。
    • EI时间要求
      • Transmitter发送完EIOS后8ns内进入EI。
      • EI至少维持20ns。
      • EI时差分peak电压为0-20mV。

    2. Transmitter退出Electrical Idle

    对于不同速率的Transmitter,退出Electrical Idle的方式有所不同:

    • Gen1:直接发送TS1/TS2序列。
    • Gen2:先发送8b/10b EIEOS信号,随后发送TS1/TS2序列。
    • Gen3及以上:先发送128b/130b EIEOS信号,随后发送TS1/TS2序列。

    EIEOS的具体格式可参考PCIe Spec 5.0 Table 4-12。

    3. Receiver进入Electrical Idle

    Receiver进入Electrical Idle的过程如下:

  • 检测EIOS信号:Receiver通过EIOS信号关闭错误检测逻辑。
  • 检测EI状态
    • Gen1:直接检测电压小于阈值电压。
    • Gen2及以上:检测“Inferring Electrical Idle”信号,L0状态下缺少Flow Control Update DLLP或SKP Order Set。
  • 4. Receiver退出Electrical Idle

    Receiver退出Electrical Idle的过程如下:

  • Gen1:直接检测电压大于65-175mV EI detect threshold。
  • Gen2及以上:检测EIEOS信号,接收到TS1信号用于恢复CDR电路,实现bit lock、symbol lock和block alignment。
  • 需要注意的是,在Electrical Idle状态下,Transmitter可以处于高阻抗模式或低阻抗模式,而Receiver必须一直处于低阻抗模式。

    通过以上详细分析,可以看出,PCIe L1低功耗状态的实现涉及多个层面的协商和协议交互。理解这些协议和流程对于优化PCIe系统的功耗管理具有重要意义。

    转载地址:http://kovfk.baihongyu.com/

    你可能感兴趣的文章