接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(6)
7.1 数据链路层的组成结构
7.1.1 数据链路层的状态
3. DL_Active状态
当数据链路层处于DL_Active状态时,PCIe链路可以正常工作。此时数据链路层可以从事务层和物理层正常接收和发送TLP、并处理DLLP,此时数据链路层向事务层提交DL_Up状态信息。
当发生以下事件后,数据链路层可以从DL_Active状态迁移到DL_Inactive状态,但是不能迁移到DL_Init状态。这也意味着数据链路层从DL_Active状态迁移出去后,必须重新进行对端设备的识别和流量控制初始化,之后才能进入DL_Active状态。
在多数情况下,数据链路层从DL_Active状态迁移到DL_Inactive状态时,意味着处理器出现了异常,系统软件需要处理这些异常。但是在下列情况时,数据链路层状态从DL_Active状态迁移到DL_Inactive状态时并不会引发异常。
- Bridge Control Register的Secondary Bus Reset位被系统软件置为1时,数据链路层将迁移到DL_Inactive状态。
- Link Disable位被系统软件置为1时,数据链路层迁移到DL_Inactive状态。
- 当一个PCIe端口向对端设备发送“PME_Turn_Off”消息之后,其数据链路层经过一段时间,可以迁移到DL_Inactive状态。RC和Switch在进入低功耗状态之前,将向其下游端口广播“PME_Turn_Off”消息,下游PCIe设备收到该消息后,将向RC和Switch发出“PME_TO_Ack”回应。当RC和Switch的下游端口收到这个回应报文后,数据链路层可以迁移到DL_Inactive状态。
- 如果PCIe链路连接了一个支持“热插拔”功能的PCIe插槽,而当这个插槽的Slot Capability寄存器的“Hot Plug Surprise”位为1时,数据链路层将迁移到DL_Inactive状态。
- 如果PCIe链路连接一个热插拔插槽,当这个插槽的Slot Control寄存器的“Power Controller Control”位为1时,数据链路层也将迁移到DL_Inactive状态。
在PCIe总线中,还有一些系统事件也可以引发数据链路层的状态转换,在此不进行一一描述。
至此,“7.1.1 数据链路层的状态”的全部内容就讲解完了。