首页 理论教育L0状态和设备进入低功耗模式之间的关系

L0状态和设备进入低功耗模式之间的关系

【摘要】:此时PCIe设备可以通过PCIe链路,发送和接收TLP、DLLP和PLP,此时LinkUp状态位为1,而数据链路层处于DL_Active状态。RC、EP和Switch进入L0s状态的“空闲”条件并不相同。Switch所有下游端口的接收链路处于L0s状态。如果PCIe设备的接收逻辑RX从任意Lane中收到1个或者2个EIOS序列后,该设备将进入到L1或者L2状态。这正是PCIe设备处于L2状态时使用的功耗低于L1状态的原因,同时也是从L2状态进入L0状态,更加耗时的原因。

PCIe设备从Configuration、Recovery和L0s状态进入L0状态时,L0状态是PCIe设备的正常工作状态。此时PCIe设备可以通过PCIe链路,发送和接收TLP、DLLP和PLP,此时LinkUp状态位为1,而数据链路层处于DL_Active状态。PCIe设备从L0状态可以进入Re-covery、L0s、L1和L2/L3 Ready状态,本节重点讨论从L0状态进入Recovery、L0s和L1状态的情况。而从L0状态进入Recovery状态的条件见第8.2.4节。

1.进入L0s状态

当PCIe设备发现链路“空闲”时[53],可以主动进入L0s状态。RC、EP和Switch进入L0s状态的“空闲”条件并不相同。对于含有多个Function的上游端口,只有所有Function都处于“空闲”状态时,才被认为“空闲”。此处“空闲”的定义与LTSSM的Ele ctrical Idle和Logical Idle间没有任何联系。

对于RC或者EP的端口,当以下两个条件同时满足时,当前端口被认为是“空闲”的。

(1)没有准备发送的TLP,或者对端没有提供足够的Credit[54]

(2)没有准备发送的DLLP。

对于Switch的上游端口,当以下三个条件同时满足时,发送逻辑TX认为PCIe链路是“空闲”的。

(1)Switch所有下游端口的接收链路处于L0s状态。

(2)没有准备发送的TLP,或者对端没有提供足够的Credit。

(3)没有准备发送的DLLP。

对于Switch的下游端口,当以下三个条件同时满足时,发送逻辑TX认为PCIe链路是“空闲”的。

(1)Switch的所有上游端口的接收链路处于L0s状态。(www.chuimin.cn)

(2)没有准备发送的TLP,或者对端没有提供足够的Credit。

(3)没有准备发送的DLLP。

值得注意的是,一个接收端或者发送端的发送逻辑TX和接收逻辑RX在同一时刻,可能处于不同的LTSSM状态,一个处于L0,而另一个处于L0s。

2.进入L1状态和L2状态

PCIe设备可以通过上层软件,将链路状态从L0状态迁移到L1或者L2状态。当PCIe设备进入D1~D3状态时,其上游链路将进入L1状态;而进入D3Cold状态时,其上游链路将进入L2状态。D1~D3和D3Cold状态的详细说明见第8.4.1节。而PCIe链路的两端设备需要同时进入L1或者L2状态。

首先两端设备的发送逻辑TX分别向对端发送EIOS序列,随后发送逻辑TX进入Elec-trical Idle状态。如果PCIe设备的接收逻辑RX从任意Lane中收到1个或者2个EIOS序列后,该设备将进入到L1或者L2状态。当PCIe链路工作在2.5GT/s时,需要发送1个EIOS序列;如果工作在5GT/s时,需要发送2个EIOS序列。

值得注意的是,PCIe设备处于L1状态和L2状态时,D+和D-信号输出的DC共模电压并不相同。处于L1状态时,PCIe设备的发送逻辑TX仍然需要维持一个相对较低的DC共模电压,其伏值比其处于L0状态时低VTX-CM-DC-ACTIVE-IDLE-DELTA(最小值为0,最大值为100mv),如公式8-1所示。

|VTX-CM-CD[DuringL0]-VTX-CM-Idle-DC[During Electrical Idle]|≤100mV (8-1)

而PCIe设备在L2状态时,其发送逻辑TX并没有这种限制,而且其发送逻辑和接收逻辑基本处于下电状态。这正是PCIe设备处于L2状态时使用的功耗低于L1状态的原因,同时也是从L2状态进入L0状态,更加耗时的原因。

如果PCIe设备支持Beacon机制,那么处于L2状态时,PCIe设备的发送逻辑TX能够发送Beacon信号,而接收逻辑RX能够检测Beacon信号[55]。Beacon机制是一种唤醒机制。当PCIe设备处于L2状态时,可以使用该机制唤醒。