PCIE协议-3-数据链路层规范-概述

发布于:2024-05-23 ⋅ 阅读:(33) ⋅ 点赞:(0)

3.数据链路层规范

数据链路层是事务层和物理层之间的中间媒介。其主要职责是在链路上的两个组件之间提供一种可靠的机制来交换事务层包(TLPs)。

3.1 数据链路层总览

数据链路层负责将事务层提供的TLPs可靠地传输到PCI Express链路另一端组件的事务层。数据链路层提供的服务包括:

数据交换:

  • 从传输事务层接受TLPs以供传输,并将其传输到传输物理层。
  • 从物理层接收通过链路的TLPs,并将它们传输到接收事务层。

错误检测和重试:

  • 生成TLP序列号和链路层循环冗余校验(LCRC)。
  • 存储传输的TLPs以供数据链路层重试。
  • 对TLPs和DLLPs进行数据完整性检查。
  • 使用DLLPs进行正向和负向确认。
  • 为错误报告和记录机制提供错误指示。
  • 链路确认超时重发机制。

初始化和电源管理:

  • 跟踪链路状态,并将有效/复位/断开连接的状态传达给事务层。

DDLPs是:

  • 用于链路管理功能,包括TLP确认、电源管理和流量控制信息交换。
  • 在链路上直接连接的两个组件的数据链路层之间传输。

DLLPs是点对点发送的,通过一个链路在两个组件之间传输。TLPs从一个组件路由到另一个组件,可能通过一个或多个中间组件。

使用随每个链路发送的数据包中包含的CRC(循环冗余校验)对DLLPs和TLPs进行数据完整性检查,DLLPs使用16位CRC,而TLPs(可以比DLLPs长得多)使用32位LCRC。TLPs还包含一个序列号,用于检测一个或多个完整的TLPs是否丢失。

接收到的DLLPs如果CRC校验失败则被丢弃。使用DLLPs的机制可能会因为这种信息丢失而遭受性能损失,但它们是自修复的,以至于连续的DLLP将取代任何丢失的信息。

未通过数据完整性检查(LCRC和序列号)的TLPs,或在从一个组件传输到另一个组件时丢失的TLPs,将由发送器重新发送。发送器存储所有发送的TLPs的副本,在需要时重新发送这些副本,并仅在从另一个组件接收到无误接收的正向确认时清除副本。如果在指定的时间段内未收到正向确认,发送器将自动开始重新传输。接收器可以使用负向确认请求立即重新传输。

数据链路层对事务层表现为一个具有不同延迟的信息通道。在任何给定的个别链路上,输入到传输数据链路层(1和3)的所有TLPs将在稍后的时间以相同的顺序出现在接收数据链路层(2和4)的输出上,如图3-1所示。延迟将取决于多种因素,包括管道延迟、链路宽度和操作频率、链路上的电信号传输以及数据链路层重试引起的延迟。由于这些延迟,传输数据链路层(1和3)可以对传输事务层施加背压,接收数据链路层(2和4)向接收事务层传达有效信息的存在或缺失。