0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIE数据链路层架构解析

路科验证 来源:LPIoT 2024-11-05 17:06 次阅读

以下文章来源于LPIoT,作者水鸟LPIoT

Pcie数据链路层

PCIe的数据链路层在事务层和物理层之间,用来负责链路管理,其主要功能是保证来自事务层的TLP在PCIe链路中的正确传输,为此数据链路层定义了一系列的DLLP报文,数据链路层使用了容错和重传机制保证数据传输的完整性和一致性(TLP ACK/NAK),此外数据链路层还需要对PCIe链路进行管理(电源管理)和监控(流量控制)。

与事务层不同的是,数据链路层主要处理端到端(同一条PCIe物理链路相邻两端设备的发送端和接收端)的数据传输;而事务层是源设备和目标设备之间的数据传输(源设备与目标设备之间传输距离更长,可能经过多个Switch并有多条PCIe物理链路)。此处类似于网络通讯的概念,链路层通讯在直接物理相连的设备端口进行,网络层通讯可以跨过多个设备进行。

数据链路层结构

数据链路层使用ACK/NAK协议发送和接收TLP(事务层报文),由发送部件和接收部件组成(每个PCIe设备的数据链路层包含了这两部分,而两个PCIe设备间的通信是发送部件和接收部件成对实现的),如下图所示;

发送部件由1.Replay Buffer、2.ACK/NAK DLLP接收逻辑和3.TLP接收逻辑组成;

接收部件由1.“Error Check”逻辑、2.ACK/NAK DLLP发送逻辑和3.TLP发送逻辑组成。

e3682e04-90b4-11ef-a511-92fbcf53809c.png

PCIe总线数据链路层使用Replay Buffer和Error Check部件共通保证数据传输的可靠性和完整性;来自事务层的TLP先暂存在Replay Buffer中,然后发送到目标设备;源设备的数据链路层根据来自目标设备的ACK/NAK DLLP报文来决定是重发这些TLP,还是清除存放在Replay Buffer中的TLP。

1.Replay Buffer的大小决定过了事务层可以暂存在数据链路层的报文数量;

2.PCIe设备使用Error Check检查接收到的TLP,并决定如何向对端设备进行报文回应;

数据链路层状态

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

e38f67d0-90b4-11ef-a511-92fbcf53809c.png

DLCMSM主要包含三个状态:DL_Inactive、DL_Iinit、DL_Active

DL_Inactive状态:物理层通知数据链路层当前PCIe链路状态不可用,没有检测到PCIe链路的对端连接了PCIe设备;PCIe设备从复位状态进入DL_Inactive状态时,进行如下操作:

(1)对PCIe数据链路层进行彻底复位:将与PCIe链路相关的寄存器置为复位值,并丢弃在Replay Buffer中保存的所有报文;

(2)数据链路层向事务层提交DL_Down状态信息

(3)丢弃来自数据链路层和物理层的所有TLP,不再接收对端设备发送的DLLP;

(4)如果PCIe链路对端有PCIe设备相连,则物理层的LinkUp状态位为1,且事务层并未禁止当前PCIe链路时,数据链路层将从DL_Inactive状态迁移到DL_Init状态。

(5)如果PCIe链路对端不存在PCIe设备,则物理层的LinkUp状态位为0,此时数据链路层一直处于DL_Inactive状态。

2.DL_Iinit状态:物理层通知数据链路层当前PCIe链路可用(LinkUp = 1),且物理层正处理链路初始化状态,此时数据链路层不能接收或发送TLP和DLLP;

3.DL_Active状态:当前PCIe链路处于正常工作模式,物理层已完成PCIe链路训练(LTSSM);此时数据链路层可以从事务层和物理层正常接收和发送TLP,并处理DLLP。在多数情况下数据链路层从DL_Active状态迁移到DL_Init状态,意味着处理器系统出现了异常,系统软件需要处理这些异常;但如下情况的状态迁移不会引发异常。

e3b1977e-90b4-11ef-a511-92fbcf53809c.png

DLCMSM除了从物理层获得当前PCIe链路状态外,还可以使用状态位向事务层报告数据链路层所处的状态;如上图所示,当数据链路层收到物理层的状态信息后,DLCMSM状态机将进行状态转换,并向事务层通知PCIe链路的状态。

1.DL_Down:数据链路层处于该状态时,表示PCIe链路暂时没有检测到对端连接设备(并非对端不存在物理设备);当数据链路层处于DL_Inactive时,该状态位有效;

2.DL_Up:数据链路层处于该状态时,表示PCIe链路的对端连接了设备;当数据链路层处于DL_Acive状态时,该状态位有效。

事务层对DL_Down/Up状态的处理

当事务层收到数据链路层的DL_Down状态信息时,则说明出现了如下状况:

1.PCIe链路的对端没有连接设备;

2.PCIe链路丢失了对端设备的连接;

3.数据链路层和物理层出现了某种错误,PCIe链路不能正常工作;

4.系统软件禁用PCIe链路。

事务层受到DL_Down状态信息后:

1.将不再从数据链路层中接收TLP,除了已经使用ACK/NAK报文确认过的TLP;

2.RC或Switch的下游端口将复位与链路相关的内部逻辑和状态;

3.Switch和Bridge的上游端口将复位相关的内部逻辑和状态,并丢弃正在处理的TLP;

——此时Switch和PCIe桥使用Hot Reset方式复位所有下游端口。

以上是《PCIE数据链路层整体架构》,敬请关注后续内容

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    15

    文章

    1229

    浏览量

    82486
  • 数据链路层
    +关注

    关注

    0

    文章

    54

    浏览量

    11987
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27493
  • 网络通讯
    +关注

    关注

    0

    文章

    74

    浏览量

    11252

原文标题:PCIE数据链路层整体架构

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据链路层组帧

    数据链路层怎么根据协议组帧,本人没有写过类似程序,大家有写过的可否贴下简单的程序 启发一下。感激不尽。谢谢。
    发表于 01-17 11:48

    TLP的数据链路层组成与操作

      本章将着重讲述TLP的数据链路层组成与操作,上一篇更新应该为第五讲,数据链路层位于事务层和物理层之间,使用容错和重传机制保证了数据传输的完整性和一致性,此外,数据链路层还需要对
    发表于 01-08 17:25

    数据链路层.ppt

    数据链路层*3.1  数据链路层的基本概念*3.2  停止等待协议  3.2.1 完全理想化的数据传输  3.2.2 具有最简单流量控制的
    发表于 10-23 16:41 0次下载
    <b class='flag-5'>数据链路层</b>.ppt

    数据链路层的作用

    数据链路层的作用:通过一些数据链路层协议和链路控制规程,在不太可靠的物理链路上实现可靠的数据传输。 “链路(Link)”和“数据链路”是不
    发表于 07-22 16:04 7037次阅读

    数据链路层的功能

     数据链路层的功能        数据链路层要完成许多特定的功能。这些功能包括为网络层提供设计良好的服务接口,处理帧同步,处理传输差错,调整帧
    发表于 07-22 16:04 3329次阅读

    数据链路层的定义

    数据链路层的定义 一、设计数据链路层的原因
    发表于 07-22 17:13 2551次阅读
    <b class='flag-5'>数据链路层</b>的定义

    什么是OSI模型数据链路层

    什么是OSI模型数据链路层 数据链路层最基本的服务是将源机网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路层
    发表于 03-18 15:11 2225次阅读

    数据链路层到底是什么_数据链路层工作原理是怎样的

    本文开始阐述了什么是数据链路层,其次阐述了数据链路层的分类和数据链路层的工作原理,最后介绍了常用的数据链路层
    发表于 03-14 14:10 3.1w次阅读
    <b class='flag-5'>数据链路层</b>到底是什么_<b class='flag-5'>数据链路层</b>工作原理是怎样的

    数据链路层常用成纸法有哪些_数据链路层的作用

    本文开始阐述了数据链路层的概念与数据链路层数据链路层的功能或作用,其次阐述了数据链路层的主要协议,最后分析了数据链路层常用成纸法有哪些。
    发表于 03-14 14:44 2154次阅读
    <b class='flag-5'>数据链路层</b>常用成纸法有哪些_<b class='flag-5'>数据链路层</b>的作用

    数据链路层和传输层的区别是什么

    本文开始介绍了传输层的概念、传输层的基本功能以及传输层服务类型,其次介绍了数据链路层功能与工作过程,最后阐述了数据链路层和传输层的区别。
    发表于 03-14 15:03 2.6w次阅读
    <b class='flag-5'>数据链路层</b>和传输层的区别是什么

    数据链路层设备有哪些

    数据链路层的设备与组件是指那些同时具有物理层和数据链路层功能的设备或组件。数据链路层的设备与组件主要有网卡、网桥和交换机。
    发表于 03-14 15:20 2.5w次阅读

    一文看懂数据链路层和网络层的区别

    本文开始介绍了网络层的概念及网络层的主要功能,其次阐述了数据链路层的概念和数据链路层的功能,最后介绍了数据链路层的作用以及数据链路层和网络层的区别。
    发表于 03-14 15:38 7.2w次阅读
    一文看懂<b class='flag-5'>数据链路层</b>和网络层的区别

    数据链路层的任务

    数据链路层的主要任务是使网络层无需了解物理层的特征而获得可靠的传输。数据链路层将通过链路层数据进行打包和解包、差错检测和校正,并协调共享介质。
    的头像 发表于 02-27 15:08 7319次阅读

    数据链路层设备有哪些

    数据链路层的设备与组件是指那些同时具有物理层和数据链路层功能的设备或组件。数据链路层的设备与组件主要有网卡、网桥和交换机。
    的头像 发表于 02-27 15:17 6w次阅读

    PCIe链路层里的ACK/NAK介绍

    ✎ 编 者 按        读cocotbext-pcie源码,有部分牵涉到数据链路层。虽然自工作以来接触到PCIe还是蛮多的,但一般往往专注在TLP层,对于数据链路层还是接触的比较
    的头像 发表于 06-25 10:31 2781次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>链路层</b>里的ACK/NAK介绍