[PCIe]LTSSM与电源管理

1. LTSSM

LTSSM全称是Link Training and Status State Machine,有以下11个状态:

Detect, Polling, Configuration, Recovery, L0, L0s, L1, L2, Hot Reset, Loopback, Disable

这些状态分为5大类:

1、链路训练状态(Link Training State):Detect->Polling->Configuration->L0.

2、重训练状态(Re-Training(Recovery) State):Recovery.

3、软件驱动功耗管理状态(Software Driven Power Management State):L0->L1/L2/L0s

4、活动状态功耗管理状态(Active-State Power Management State,ASPM State):L1/L0s

5、其他状态(Other State):Hot Reset, Loopback, Disable

blob.png

与电源管理相关的状态为:L0 ,L1, L2, L0s

L0:

这是链路(Link)的正常状态(Normal and Full-Active State),所有的TLP、DLLP和Ordered Sets都可以被正常的收发。该状态下,速率可以是2.5GT/s或者是5GT/s或更高(如果链路两端设备都支持的话,且经过了Re-Trainning)。

L0s:

该ASPM状态主要用于降低功耗,在总线空闲的时候可以进入该状态,且从该状态可以迅速地重新切换回L0状态。当在L0状态是,链路上出现EIOS时,则表明即将进入L0s状态。当在L0s状态时,链路上出现FTS时,链路会迅速地完成位锁定和符号锁定,并进入L0状态。

L1:

相对于L0s状态,L1状态下的功耗更低。进入L1状态需要链路两端的PCIe进行“沟通”,只有双方都“同意”进入该状态,链路才会进入该状态。一般有以下两种方式:

1、第一种是由ASPM引导,硬件自动完成的。发送端发现链路上长时间没有TLP或者DLLP时,便通过ASPM建议接收端进入L1状态。如果接收端“同意”了,则链路进入L1状态;如果接收端“不同意”,则链路进入L0s状态。

2、第二种是有软件引导的,软件发送一系列的命令让链路进入低功耗状态(D1,D2,or D3 Hot)。随后,链路的上端设备会通知下端设备进入L1状态,收到来自下端设备的应答后,链路进入L1状态。

L2:

L2状态下的链路功耗更低,因为其只保留了Vaux,关闭了链路的其他功能。此时,需要Beacon信号或者WAKE#边带信号来唤醒系统。其中Beacon信号是一种低频信号(30KHz~500MHz)

这几个状态的切换关系如下:

对应的电源状态的区别如下:

 

2. Power Management states

Power Management states 按照Function 和 Link两个层面分为D states 和L states (就是上一节的L0,L1,L0s)

具体地说,D states是指Device的电源状态,L states是指Link的状态,是上下游之间连接的状态。

2.1 D states

D states 就是 Device Power Management States (D-States) of a Function,分为以下4个状态:

image.png

D0状态,又被称为Full-On状态。其有两个子状态——D0(未初始化,Uninitialized)和D0(活动,Active)。

当PCIe设备刚完成Fundamental Reset(前面的文章详细介绍过)时,或者刚从D3 Hot状态进入D0状态时,该PCIe设备的Function默认进入的是D0未初始化状态。在D0未初始化状态下,所有的寄存器(除了Sticky位)都恢复为其默认的状态。此时,只能响应配置请求(Configuration Transaction),且不能发起事务,也不能处理接收到的Memory或者IO事务。

当处于D0未初始化状态的Function完成配置后,便会进入D0活动状态。在D0活动状态下,Function的所有功能都是可操作的,即正常工作的状态。

D1状态,又称为轻睡眠状态(Light Sleep)。该状态是可选的。
D2状态,又称为深睡眠状态(Deep Sleep)。该状态也是可选的。

D3状态,又称为Full-Off状态。其也有两个子状态D3 Hot状态和D3 Cold状态。当设备进入D3 Hot状态,表明该设备的电源尚未切断;而进入D3Cold状态,则表明设备的电源已被切断,如有Vaux存在,则链路进入L2状态,否则进入L3状态。

软件层可以通过向PMCSR(Power Mgt Control and Status Register)的PowerState位置写相关值,使得设备的某个Function进入D3 Hot状态。在D3 Hot状态下,该Function只能发送PME消息和PME_TO_ACK消息或者应答配置请求和PME_Turn_Off消息。

 

PCIe设备PM的各个状态之间的切换关系,如下图所示:

 

3.D states和L states的关系

D states和L states的关系其实就是上下游端口的电源状态与他们之间link的状态关系,如下表:

 

 

 

 

3.ASPM

Active State Power Management (ASPM) is an autonomous hardware-based, active state mechanism that enables power savings even when the connected components are in the D0 state. After a period of idle Link time, an ASPM Physical-Layer protocol places the idle Link into a lower power state. Once in the lower-power state, transitions to the fully operative L0 state are triggered by traffic appearing on either side of the Link. ASPM may be disabled by software.
主动状态电源管理(Active State Power Management, ASPM)是一种基于自主硬件的主动状态机制,即使连接的组件处于D0状态,也可以节省电源。经过一段空闲链路时间后,ASPM物理层协议将空闲链路置为低功耗状态。一旦进入低功率状态,连接两端出现的流量将触发向完全运行的L0状态的转换。ASPM可能被软件禁用

https://blog.51cto.com/xiamachao/1680952

3.x L1 PM Substates


L1 PM Substates Extended Capability

L1 PM子状态扩展Capability是一个可选的Capability,如果L1 Substates 是在一个端口上实现的,则需要这个Capability。