PCIe Link Training

2023年 7月 14日 26.7k 0

PCIe链路训练是一种为了确保两个或更多PCIe设备能够有效、准确地通信的过程。这个过程可以简单地分为三个步骤:接收器检测(Receiver Detect),轮询(Polling),和配置(Configuration)。下面,我会尽量用通俗易懂的语言解释一下这三个步骤。

  • 接收器检测(Receiver Detect):在这个步骤,设备会通过各自的接收器检测电路,试图找出是否有其他设备可以连接。就像是打开手机的蓝牙功能,寻找附近可以配对的蓝牙设备一样。一旦找到了可连接的设备,它们就会开始使用基础速度(2.5 Gbps)的数据通信。

  • 轮询(Polling):这个阶段有点像是设备之间的“握手”环节。设备们开始以固定的数据集合(训练序列)进行信息交换,就像是你和朋友交换秘密握手动作一样,为的是确保双方都能正确理解对方发出的信号。

  • 配置(Configuration):在这个步骤,设备之间的连接将根据需求进行微调,以达到最佳通信效果。例如,如果由于物理距离等原因,数据信号在传输中出现了不同步的情况(就像是看电影的时候,画面和声音没有对上一样),设备就会自动进行调整,确保数据传输的准确性。同时,这个阶段也会确定通信的宽带(也就是可以同时传输的数据量)。

  • 完成以上三个步骤后,设备之间就可以进行有效的数据通信了。这个过程就像是打开手机,打开蓝牙,找到并配对其他设备,然后进行通信一样。

    5 链路训练

    当所有设备都已接通电源并提供了参考时钟时,PCIe设备会开始链路训练过程。链路训练过程包括接收器检测(Rx detect)、轮询和配置。经过此过程后,PCIe设备从端点到根复杂体之间建立了连接。

    5.1 接收器检测(Rx Detect)

    链路训练的第一步是接收器检测(Rx detect)。一旦所有的设备都已接通电源并提供了参考时钟,设备开始在每条通道上启动Rx检测电路,使设备能够确定是否有链路伙伴与之配对。图5-1显示了PCIe设备试图识别其他PCIe设备以建立连接并发送或接收数据的示意图。假设PCIe Rx检测电路看到了另一个设备,每条独立通道开始以2.5 Gbps的速度传输串行数据。这是最低和最基础的PCIe数据速率,它在原始的PCIe Gen 1规范中被指定。PCIe 1.0,也称为PCIe Gen 1,与任何PCIe设备都兼容。因此,每个PCIe链路都从同样的链路初始化过程开始。这也意味着任何PCIe设备只要能形成PCIe 1.0数据速率的链路,就能以2.5 Gbps的速度传输数据。

    image.png

    5.2 轮询

    在Rx检测阶段完成并且每条通道都在传输数据后,PCIe链路将开始轮询。轮询是一个阶段,在这个阶段中,根复杂体、中继器(在图5-2中称为retimer)和端点都开始以PCIe Gen 1的速度传输称为训练序列的有序数据集,以建立比特和符号锁定。比特锁定指的是接收器锁定了发射器的时钟频率。符号锁定指的是接收器能够解码来自发射器的有效的10位符号。图5-2显示了以方形信号指向PCIe设备的红箭头表示的轮询。在此过程结束时,每个设备能够解读接收到的数据并做出相应的反应,然后进入配置阶段。

    image.png

    5.3 配置

    在配置状态中,进行通道到通道的去偏斜过程,该过程将补偿由于通道长度不同造成的数据的不对齐。此阶段还确定了PCIe链路的宽度。在此过程结束时,每个通道都与一个特定的链路号和该链路内的一个通道号关联起来。图5-3表示了配置阶段,红箭头显示了为对齐数据信号而交换的信号。如果有多个链路,PCIe连接被称为双分。因为图5-3显示了一个单一的非双分连接,所有的通道都被分配给链路号0。对于双分,链路的数量将增加。例如,在x8x8(2 x 8通道端点)双分的情况下,前8个通道的链路号为0,接下来的8个通道的链路号为1。此外,链路可以由于PCIe retimer分成两部分:根复杂体到retimer和retimer到端点,如图5-3所示,其中retimer在中间。retimer两侧的链路分别进行链路初始化。确定链路宽度和通道号码后,PCIe链路可以进入多个状态。图5-3中的系统进入了所谓的L0状态,这是正常的操作状态,在该状态下发送和接收数据和数据包。一旦达到L0状态,根复杂体和端点就可以成功地相互通信。或者,PCIe链路可能会转换为多个低功耗状态或进入另一个称为恢复的链路训练状态。

    image.png

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论