《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(5)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(4)

7.1 数据链路层的组成结构

7.1.1 数据链路层的状态

数据链路层需要通过物理层监控PCIe链路的状态,并维护数据链路层的“控制与管理状态机”(Data Link Control and Management State Machine,DLCMSM)。DLCMSM状态机可以从物理层获得以下与当前PCIe链路相关的状态。

  • DL_Inactive状态

物理层通知数据链路层当前PCIe链路不可用。

  • DL_Init状态

物理层通知数据链路层当前PCIe链路可用,且物理层正处于链路初始化状态。此时数据链路层不能接收或者发送TLP或DLLP。

  • DL_Active状态

当前PCIe链路处于正常工作模式。此时物理层已完成PCIe链路训练或者重训练。

DLCMSM状态机除了可以使用上述状态位,从物理层获得当前PCIe链路状态外,还可以使用以下状态位,向事务层通知数据链路层所处的状态。事务层通过这些状态位获知数据链路层所处的工作状态。

  • DL_Down

数据链路层处于该状态时,表示在PCIe链路的对端没有发现其它设备。当数据链路层处于DL_Inactive状态时,该状态位有效。

  • DL_Up

数据链路层处于该状态时,表示在PCIe链路的对端连接了其它设备。当数据链路层处于DL_Active状态时,该状态位有效。

当数据链路层收到物理层的状态信息后,DLCMSM(Data Link Control and Management State Machine,数据链路层控制与管理状态机)状态机将进行状态转换,并向事务层通知PCIe链路的状态。如果在PCIe链路的两端都连接着PCIe设备,那么这两个PCIe设备的数据链路层,在绝大多数时间内状态相同。数据链路层各个状态的详细说明,及PCIe链路的状态迁移过程如下:

1. DL_Inactive状态

当PCIe设备复位时,将进入该状态。值得注意的是,只有传统复位方式才能使PCIe设备进入DL_Inactive状态,而FLR方式并不影响DLCMSM状态机。

当PCIe设备从复位状态进入DL_Inactive状态时,将对PCIe数据链路层进行彻底复位,将与PCIe链路相关的寄存器置为复位值,并丢弃在Replay Buffer中保存的所有报文。当PCIe设备处于DL_Inactive状态时,数据链路层将向事务层提交DL_Down状态信息,并丢弃来自数据链路层和物理层的所有TLP,而且不接收对端设备发送的DLLP。

PCIe设备的物理层设置了一个LinkUp位,该位为1时,表示PCIe链路的对端与一个PCIe设备相连当物理层的LinkUp状态位为1、且事务层没有禁止当前PCIe链路时(设置Switch下游端口Link Control寄存器的“Link Disable”位为1),PCIe数据链路层将从DL_Inactive状态迁移到DL_Init状态

PCIe设备在进行链路训练时,将检查PCIe链路的对端是否存在PCIe设备。如果对端不存在PCIe设备,则物理层的LinkUp位将为0,此时数据链路层将一直处于DL_Inactive状态。系统软件可以设置Switch下游端口Link Control寄存器的“Link Disable”位为1,禁用该端口连接的PCIe链路,此时即便PCIe链路对端存在PCIe设备,数据链路层的状态也仍然为DL_Inactive。

 更多内容请看下回。

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值