【PCIE体系结构十二】链路训练的相关基础前菜

news2025/2/22 0:33:26

👉个人主页:highman110

👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 

参考书籍:《PCI.EXPRESS系统体系结构标准教材 Mindshare》    

目录

物理层控制字符

链路训练中的Ordered Set


物理层控制字符

        上篇文章讲进入发送多路复用器的内容时提到过控制字符,这些控制字符是组成数据包或ordered set的重要组成部分,需要再详细介绍一下。Gen 3之后,不叫控制字符了,定义了一些framing token(帧令牌),当传输的不是ordered set时,用token来区分载荷是TLP还是DLLP,大体功能和之前的控制字符类似。这些控制字符在经过物理层是不做加扰的。

        Gen 1和Gen 2的控制字符定义如下:

        解释一下几种字符,SDP、STP、End这种就不多说了,意思跟上面图里的一样。

        COM,俗称Comma码,001111 1010或110000 0101,其作用是复位LFSR为初始值,这个在链路训练时需要用到,COM作为所有order sets的开始字符,随后跟着三个或者更多的信息字符。接收端确定收到COM的过程叫做symbol lock。有以下三种情况会用COM来实现符号锁定:

        1、在首次建立链路时的链路训练期间传输TS1和TS2有序集(每个有序集都以COM符号开始)。

        2、在由于链路上有问题而发起的链路重新训练期间传输TS1和TS2有序集(每个有序集都以COM符号开始)。

        3、发送器发送FTS有序集,以通知接收器重新获得比特锁定和符号锁定,并将链路状态从L0s(低功耗状态)改变到L0(正常工作状态)。

        PAD,主要用于Mult-Lane中,当一个包的长度比较短,有的Lane可能就没有数据可以发了,这时候可以用PAD字符来填充。

        SKP,SKP字符用做SKIP有序集的一部分。传输SKIP有序集是为了进行时钟容差偿。

        FTS,当链路进入低功耗状态,发送端要唤醒链路时,会首先发送一定数量的FTS Ordered Sets,接收端会重新取得Bit Lock(就是接收端CDR恢复出时钟的过程)和Symbol Lock(就是接收端确定收到COM的过程)。

        IDL,该字符用做电气空闲有序集的一部分。传输该有序集是为了通知接收器,该链路将要转换到L0s低功耗状态(也称做链路的电气空闲状态)。

        如下图是物理层TLP的报文格式:

        Gen3之后的framing token定义如下,详细内容请查阅PCIE 3.0 spec:

 

链路训练中的Ordered Set

        物理层会发送一些特殊的字符序列来进行链路训练,这些序列也称PLP,物理层报文,PCIE总线规范定义了以下几种order sets:

        TS1 and TS2 Ordered Set (TS1OS/TS2OS):即training sequence 1和training sequence 2,这两种PLP在链路训练的多个状态机中使用,其中TS1序列的主要作用是检测PCIe链路的配置信息,TS2序列确认TS1序列的检测结果。

        TS1和TS2类似,都是由16个Symbol组成(每个symbol 10bit,8b/10b编码之后的Byte),区别在于symbol 6~9(速率达到8GT/s时的均衡信息或TS1、TS2标识符)和symbol 10~15(TS1、TS2标识符),其结构图如下图所示:

        第0字符:在速率为2.5GT/s或者5G/s时,为COM控制字符,表示TS1/TS2序列的开始。COM字符序列将复位LF-SR寄存器。在速率为8GT/s或者以上时,TS1为0x1E,TS2为0x2D。

        第1字符:在链路训练的初始阶段,第1字符存放控制字符PAD,即为空,注意空不是全0或者全1,是8B/10B或者128B/130B编码组,这个前面也说到过,且不同的速率情况下PAD的码型和数量也是不同的。而在链路的配置阶段,该字符存放端口使用的Link Number。

        第2字符:在链路训练的初始阶段,第2字符为控制字符PAD,即为空。而在链路的配置阶段,该字符存放端口使用的Lane Number。

        第3字符:为FTS序列的个数(N_FTS)。不同的PCIe链路需要使用不同数目FTS序

列,才能使接收端的PLL锁定接收时钟。

        第4字符:存放当前PCIe设备支持的数据传送率,第1位为1表示支持2.5GT/s传送率;第2位为1表示支持5GT/s及传送率;第3位为1表示支持8GT/s的数据传送率;第4位为1表示支持16GT/s传送率;第5位为1表示支持32GT/s传送率;如果已经发送11111b并通过了训练,会继续发送10111b来表示支持64G GT/s传送率。第6位是一个多功能位,当PCIe链路的没有配置成功时可以作为Notification位,也可以用作发送链路De-emphasis的使能位,它的具体定义在不同的LTSSM状态下有不同的功能;第7位为speed_change位,当该位为1时,通知PCIe链路对端设备需要改变传送速率。

        第5字符:存放命令。第0位为“Hot Reset”,第1位为“Disable Link”,第2位为“Loopback”,第3位 “Disable Scrambling”,第4位为“Compliance Receive”。其他bit定义大家自行查阅PCIE规范,这里不多提了。当接收逻辑RX收到TS1或者TS2序列后,将根据该字符的命令进行对应的操作。

        Electrical Idle Ordered Set (EIOS):即idle序列,在正常情况下,发送端欲要进入electrical idle状态时,将首先向对端发送idle序列,才能进入。electrical idle是一种PCIE链路的低功耗状态。如果PCIe设备使用2.5GT/s的传送率时,Idle序列由1个COM字符加3个IDL字符组成,即“COM IDL IDL IDL”;如果PCIe设备使用5GT/s的传送率时,Idle序列由两组这样的字符序列组成,即“COM IDL IDL IDL COM IDL IDL IDL”;如果PCIe设备使用8GT/s及以上传送率时,Idle序列由16个66h字符组成。Electrical Idle状态是一种特殊的Idle状态,处于该状态时,PCle链路使用的功耗最低。PCIe设备可以根据链路的使用情况确定当前链路是否处于Electrical Idle状态,而不是必须收到Idle序列后进人该状态。如一个PCIe设备在很长一段时间没有收到流量控制报文或者链路处于Electrical Idle状态时,也可以推断出对端设备处于Idle状态。

        Electrical Idle Exit Ordered Set (EIEOS):用来退出低功耗状态。当发送端退出IDLE状态时,必须向对端发送EIEOS序列。EIEOS序列仅在链路传送率大于2.5GT时使用,传送率为5GT/s时,该序列由1个COM(K28.5)字符、14个EIE字符(K28.7)和D10.2(TS1识别符)组成;传送率为8GT/s时,该序列由16个连续交替的00h、11h字符组成;传送率为16GT/s时,该序列由4个连续交替的0000h、1111h字符组成;传送率为32GT/s时,该序列由2个连续交替的00000000h、11111111h字符组成;

        FTS Ordered Set (FTSOS):即fast training sequence,该字符序列协助接收逻辑获得bit lock和symbol lock。传送率为5GT/s及以下时,单个FTS序列由1个COM字符加3个FTS字符组成,该序列的主要目的是使接收逻辑RX重新获得Bit/Symbol Lock。发送逻辑需要向对端发送多少个FTS序列由接收到的TS1/2序列决定,TS1/2序列的第3个字符为需要发送FTS序列的个数,最多255个。传送率为8GT/s及以上时,序列有变化,大家自行查阅规范文档。

        SKP Ordered Set (SOS):SKIP有序集用在多通道实现中,会在所有通道上定期发送SKIP有序集,以使接收时钟容差补偿逻辑能够补偿两个时钟之间的频率变化,这两个时钟一个是发送设备使用的时钟,用以定时输出串行比特流,另一个是接收器设备的本地时钟。接收器在其弹性缓冲区中向SKIP有序集添加一个SKP符号,从而防止由于发送器的时钟慢于本地接收时钟而可能出现的缓冲区下溢状况。另一方面,接收器检测其弹性缓冲区中SKIP有序集的SKP符号,以便防止由于发送器的时钟快于本地接收时钟而可能出现的缓冲区上溢状况。

        在PCIe总线中,Ordered Set的发送方式与TLP和DLLP有较大不同。假设一条PCIe链路由多个Lane组成,那么TLP和DLLP报文将分散到多个Lane中。而Ordered Set必须同时出现在这些不同的Lane,这几个Lane必须在同一个时间点发送Ordered Set。而不能出现一个Lane正在发送Ordered Set进行与链路训练相关的操作,而其他Lane进行其他数据传递的情况。PCIe链路发送TLP与发送Ordered Set的过程如下图所示。如在一个×4的PCIe链路中发送SKIP序列时,每一个Lane中都要出现“COM、SKP、SKP、SKP”这样的数流。其他Ordered Set的发送方法也与此类似。而TLP或者DLLP的发送分散到各个Lane 上。

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linuxOPS基础_Linux系统的文件目录结构及用途

linux系统文件目录结构 Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中…

如何使用高扩展组件制作APP原型的标签栏?

原型项目中的组件(亦称元件、控件),是指通过基础图层拼装而成,可供用户进行交互或用于展示复杂内容的元素。 在原型设计工作中,组件的使用是非常重要的部分,其不仅关乎项目内容的呈现,更会影响…

网络货运平台源码 管理平台端+司机端APP+货主端APP源码

网络货运平台系统源码,网络货运平台源码 管理平台端司机端APP货主端APP 遵循政策要求的八项基本功能,结合货主、实际承运人、监管方等多方业务场景,构建人、车、货、企一体的标准化网络货运平台系统。具有信息发布、线上交易、全程监控、金融…

网络安全工程师能拿高薪的秘密!

网络安全是一门具有很强实践性的学科,但是网络安全传统过程对实践能力培养环节比较薄弱,缺少适应新需求的实践与创新平台。所以,很多网络安全专业的学生学习的基本都是理论知识,而最重要的实战能力薄弱。仅仅只会一点基础的专业知…

景区虚拟人智能互动导览提升客户服务体验

数字化浪潮下,文旅产正积极拥业数字化转型。虚拟数字人作为元宇宙的交互入口,其在文旅产业中的应用,对文旅产业的发展具有非常重要的意义。将超写实虚拟人化身为景点讲解员有哪些好处呢? 视觉冲击力更强,吸引眼球 超写实虚拟人的…

jvm之JMX

写在前面 本文来看先jmx相关内容。 1:jmx介绍 jvm在运行的过程中有很多的信息,比如堆内存,线程数,加载的类信息,CPU的使用量等,如果我们想要将这些信息暴漏让外界获取,该怎么做呢?此时就需要…

springAop原理分析-动态代理对象创建过程分析

概念 AspectJ Aspect 切面(由多个切点组成,多个点组成面) 启用AspectJ支持后,Spring 会自动检测出在应用程序上下文中定义的任何 Bean,如下使用Aspect 定义的一个切面示例。 package org.xyz; import org.aspectj.…

STM8、STM8S003F3P6 实现PWM控制电机HAS10227

背景 有个项目需要控制一台风机的转速,使用STM8S003F3P6 输出PWM控制,这里就详细记录一下调试记录 原理图 原理图比较简单,电机接口CN3 电机接口原理图 与MCU管脚连接位置如下图 首先我们要明白电机的原理 电机 简单来说就是 实现电能与…

闲置手机建站 - 安卓Termux+Hexo搭建属于你自己博客网站【cpolar实现公网访问】

文章目录 1. 安装 Hexo2. 安装cpolar内网穿透3. 公网远程访问4. 固定公网地址 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…

助力工业物联网,工业大数据之一站制造业务主题划分【十三】

文章目录 01:一站制造业务主题划分02:一站制造业务维度设计03:一站制造业务主题维度矩阵 01:一站制造业务主题划分 目标:掌握一站制造的主题域及主题的划分实施 来源 主题域划分:业务或者部门划分 业务&am…

PHP基于xlswriter支持无限表头层级Excel导出

本章介绍基于PHP扩展xlswriter的Vtiful\Kernel\Excel类可以支持无限层级的复杂表头导出! 废了九牛二虎之力,终于把这个功能类写完了…后续会持续更新优化 准备xlswriter扩展 windows系统: 到PECL网站下载符合自己本地PHP环境的ddl文件下载地…

Java内部类(成员内部类、静态嵌套类、方法内部类、匿名内部类)

文章目录 一、内部类的共性二、为什么需要内部类三、静态内部类(静态嵌套类)四、成员内部类五、局部内部类(方法内部类)六、匿名内部类 Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类…

WSL2+windows terminal

WSL2的安装与使用-Windows与Linux双系统的新选择 既要使用Windows系统满足日常生活,协作办公,又要使用Linux系统满足开发工作,双系统来回重启好麻烦,双主机成本高,远程服务器好多限制,WSL也许是更好的解决…

“智慧赋能 强链塑链”——打造电力特色智慧供应链体系

构建业务数智化、资源集约化、运营一体化、发展绿色化的智慧供应链体系,是电力企业实现智慧供应链建设的使命和目标。同时,在国内外双循环、一带一路、建立统一大市场的政策背景推动下,企业经营和居民生活对电力的需求仍然强劲并持续增长&…

Seata AT模式源码解析一(Seata Server端启动流程)

文章目录 启动类 ServerSessionHolder初始化DefaultCoordinator初始化初始化NettyRemotingServer 启动类 Server seata-server的入口类在Server类中,源码如下: public class Server {/*** The entry point of application.** param args the input arg…

Intel Realsense D405 在Ubuntu18.04下使用kalibr标定

目录 一. 在ubuntu下使用kalibr标定realsense_ros的安装总结下面是标定步骤 一. 在ubuntu下使用kalibr标定 在Realsense官网上librealsense现在D405只接受ROS2下的环境(相机确实很新) 在ROS1下我想到了改设备ID号的方式进行标定 这里需要注意libreals…

蓝桥杯并查集总结

本文先是给出三篇并查集原理解释文章链接,又提供了python代码模版;而后给出了一份蓝桥杯并查集的题单,并附有部分题目及其求解思路、代码。 目录部分 并查集原理 python代码 并查集题单 蓝桥幼儿园 题目描述 输入描述 输出描述 输入…

ERP有哪些系统?运用在哪些行业?

国内目前市面上ERP系统五花八门,但能真正快速匹配企业业务,且可以进行快速迭代二次开发的系统并不多见。 所以在选择ERP系统的时候可以参考下面这张表格中的内容: 目前常见的ERP软件大概可以分为三大类: ① 标准ERP应用&#xf…

白银实时价格应该在最适合的地方下注

小时候我们看战争片,总是发现主角们带兵打仗,战无不胜,偶尔有一场大的失利,但是总是能耐化险为夷,逢凶化吉,甚至最后成功反扑、反败为胜。后来小编一琢磨,发现,其实这些将才们打仗&a…

如何使用C++ 在Word文档中创建列表

列表分类是指在Word文档中使用不同格式排序的列表,来帮助我们一目了然地表达出一段文字的主要内容。比如,当我们描述了某个主题的若干点,就可以用列表把它们一一表达出来,而不是写成完整的段落形式。同时,列表也可以帮…