首页 理论教育PCIExpress体系结构导读:检测状态

PCIExpress体系结构导读:检测状态

【摘要】:如图8-6所示,Detect状态由Detect.Quiet、Detect.Active两个子状态组成。在正常情况下,PCIe链路将从Detect状态迁移到Polling状态。而在Detect状态中,PCIe设备的发送逻辑TX将直接进入到“Electrical Idle”状态,并不会使用Idle序列通知对端设备的接收逻辑RX。当PCIe设备处于Detect.Quiet状态超过12ms之后,或者检测到PCIe链路上的任何一个Lane退出“Electrical Idle”状态时,PCIe设备将进入Detect.Active状态。

如图8-6所示,Detect状态由Detect.Quiet、Detect.Active两个子状态组成。该状态的主要功能是检测PCIe链路上是否有PCIe设备存在,如果存在,一共使用了多少可用的Lane资源。在正常情况下,PCIe链路将从Detect状态迁移到Polling状态。

978-7-111-29822-9-Part02-100.jpg

图8-6 Detect状态机

当PCIe设备进行传统复位操作[40]后,首先进入Detect.Quiet状态。在多数情况下,如果该PCIe设备的对端存在设备时,PCIe链路的两端将同时进入Detect.Quiet状态。因为PCIe链路的两端可能同时进行复位操作。

在PCIe设备进入Detect.Quiet状态时,其发送逻辑TX处于“Electrical Idle”状态,此时该设备发送链路的D+和D-信号的电压为DC共模电压,且为相同的值,此时发送逻辑TX使用的功耗最低。

值得注意的是,物理层也可以从L2、Loopback、Disabled、Polling、Configuration和Re-covery状态进入Detect.Quiet状态,此时发送逻辑TX需要发送必要的Idle序列,通知对端设备的接收逻辑RX,然后经过一段延时后才能进入“Electrical Idle”状态。而在Detect状态中,PCIe设备的发送逻辑TX将直接进入到“Electrical Idle”状态,并不会使用Idle序列通知对端设备的接收逻辑RX。

当PCIe设备处于Detect.Quiet状态时,缺省使用2.5Gb/s的数据传送率,即PCIe V1.x规定的数据传送率,并置LinkUp、upconfigure_capable[41]等状态位为0,此时数据链路层处于DL_Inactive状态。整个PCIe链路处于“完全静止”的状态。

当PCIe设备处于Detect.Quiet状态超过12ms之后,或者检测到PCIe链路上的任何一个Lane退出“Electrical Idle”状态时,PCIe设备将进入Detect.Active状态。(www.chuimin.cn)

PCIe设备进入Detect.Active状态后,其发送逻辑TX将向该链路的所有“未配置过的Lane”端发送“Receiver Detection序列”[42],检测其对端的接收逻辑RX是否正常工作。如果所有Lane的接收逻辑RX都在正常工作时,PCIe设备进入到Polling状态。

如果没有一个Lane的接收逻辑RX被检测到,PCIe设备将进入到Detect.Quiet状态,此时可能PCIe链路的对端没有连接PCIe设备,或者该PCIe设备并没有正常工作。

如果仅有部分Lane正确检测到对端接收逻辑RX的存在,物理层将首先等待12ms,然后使用该链路的所有“未检测成功过的Lane”向对端重新发送“Receiver Detection序列”,进一步识别可用的Lane。如果这次的检测结果与第一次检测结果相同,物理层将这些“不可用”的Lane置为Ele ctrical Idle状态,并进入Polling状态,如果两次结果不相同,则进入Detect.Quiet状态。

这些被标识为“Electrical Idle”状态的Lane将不会被LTSSM状态机继续使用。有时PCIe链路的两端虽然都连接PCIe设备,但是这些设备不一定利用了PCIe链路上所有的Lane,下文将举例说明Detect.Active状态的运行机制。

假设一个PCIe链路由8个Lane组成,其上游端口与一个Switch连接,而下游端口连接一个EP,如果这个EP仅使用了2个Lane。那么第一次PCIe链路检测结果为6个Lane没有与EP进行连接,而经过12ms再次进行检测时,可能还检测到有6个Lane没有与EP进行连接,此时该PCIe链路认为EP仅使用了2个Lane。如果第2次检查发现有7个或者5个Lane没有与EP进行连接,说明两次检测结果不一致,此时PCIe设备将要退回到De-tect.Quiet状态,并择时重新进入Detect.Active状态,重新进行链路探测。

Detect状态是PCIe设备进入的第一个状态,在这个状态中,PCIe设备需要识别PCIe链路的拓扑结构。在这个状态中,物理层使用的检测手段都是基于PCIe链路的物理特性,只有PCIe设备发现PCIe链路的对端具有合法设备后,才能进入Polling状态。