【PCIE体系结构十三】LTSSM

news2025/1/10 21:52:11

👉个人主页:highman110

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

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

目录

概览       

检测

轮询

配置

L0

恢复

L0s

L1

L2

回环

禁用

Hot复位


概览       

         LTSSM由11个定级状态所组成:检测(Detect)、轮询(Polling)、配置(Configuration)、恢复(Recovery)、L0、LOs、L1、L2、Hot复位、回环(Loopback)和禁用(Disable)。这些状态可分为以下5类:

        1.链路定向状态。

        2.链路重新定向状态。

        3.电源管理状态。

        4.活动电源管理状态。

        5.其他状态。

        从任何类型的复位状态退出后,LTSSM流通过以下步骤重新训练:检测>轮询>配置>L0。其他状态间的转换大家看图中的箭头理解,这里暂不多提。

 

        下面简单描述一下这11种状态:

检测

        这是复位后的初始状态。在该状态中,设备检测链路远端连接的设备是否存在以及使用了多少条lane资源。也可从几个其他LTSSM状态中进入检测状态,大家可以看上面状态机图的箭头。Detect状态主要包含了两个子状态:Detect.Quiet和Detect.Active.

        (1) 检测.静止(Detect.Quiet)子状态

        进入:从基本复位或Hot复位进入,也可从L1、回环、禁用、轮询、配置和恢复状态进入。

        在检测.静止期间:发送器处于电气空闲状态。在将链路置于电气空闲状态前不必发送电气空闲有序集;发送器驱动一个DC共模电压(不必满足0~3.6V的规范);初始化2.5Gbit/s(第一代)的传输速率(不需要通过TS1和TS2有序集来通告链路速率);数据链路层发送LinkUp=0。

        退出到检测.活动:12ms超时后(处于检测.静止状态超过12ms)或当链路退出电气空闲状态时退到该状态。

        (2) 检测.活动(Detect.Active)子状态

        从检测.静止状态进入:12ms后或当链路退出电气空闲状态时进入该状态。

        在检测.活动期间:发送器设备检测链路的所有通道上是否连接了接收器。发送器在所有通道上启动一个稳定的DC共模电压。该电压可以是VbD、GND,或者这两个值之间的其他稳定电压。然后发送器驱动一个与当前值不同的DC共模电压。根据D+和D-向新电压的线路充电速率来检测接收器。在设计时,设备就被设计成知道更改电压所需的充电时间(基于假定的线路阻抗和在没有接收器终端情况下的发送器阻抗)。如果在另一端连接了接收器,充电时间将比没有连接接收器时要长。

        退出到检测.静止:出现在未检测到接收器时。只要未连接接收器,就每12ms重复一次检测.静止到检测.活动的循环。如果在所有已配置的通道上检测到接收器,则下一个状态是轮询。

        退出到轮询:如果设备检测到已连接的接收器则退出到轮询状态。现在该设备必须驱动一个0~3.6V的VTX-CM-DC规范内的DC共模电压。

        特殊情况:如果并非所有的设备通道都连接到接收器。例如,一台x4的设备连接到一台x2的设备。在这种情况下,设备会检测某些通道(两条通道)连接到接收器,而其他则没有。那些连接到接收器的通道属于LTSSM,而那些未连接到接收器的通道有两种选择:

        a.那些未连接到接收器的通道属于另一个LTSSM(如果该通道可作为分离的链路运行),这些LTSSM继续重复上述接收器检测序列(就是剩下的链路继续检测)。

        b.那些未连接到接收器并且无法成为另一条链路或LTSSM一部分的通道必须将无连

接的通道转换为电气空闲状态(就是剩下的链路进入电气空闲)。

轮询

        在链路训练和初始化过程中,设备将在此状态首次进行PLP(如TS1/TS2有序集)交互。在轮询状态期间完成以下训练内容:

        比特锁定;

        符号锁定;

        通道极性;

        通道数据速率;

        另外一致性测试也出现在该状态中:

        在一致性测试期间,发送器输出指定的一致性测试码型。测试设备使用该码型来验证所有的电压、噪声的发射和训练规范是否处于误差范围之内。在轮询状态期间,设备发送TS1和TS2有序集并响应接收到的TS1和TS2有序集。通过交换TS1和TS2有序集中的速率ID字段(支持的最高速率)来通告对更高比特速率的支持。

 

        下面按照上图的箭头,从左往右简单描述一下子状态间的转换。

        1、当检测完成,发送器在所有检测到接收器的通道上驱动DC共模电压后,将进入轮询.活动状态,在这个状态下,两台已连接设备的发送器在所有连接的通道上最少发送1024个通道和链路号字段中使用PAD符号填充的连续的TS1有序集。1024个TS1有序集总计用64us的时间来实现比特和符号锁定。

        2、如果在轮询.活动状态检测到有任意一条lane从未检测到从电气空闲退出,那么就退出到轮询.一致状态(一条通道上的被动测试负载,如电阻器,即可强制所有通道进入轮询.一致状态),当然,在轮询.一致状态如果所有lane都退出了电气空闲,将进入到轮询.活动状态继续进行TS1交互。

        3、如果在轮询.活动状态任意通道上都没有接收到链路和通道号字段设置为PAD符号的TS1或TS2有序集,则退出到检测状态。

        4、如果在轮询.活动状态下,设备在所有通道上接收到8个连续的通道和链路号字段设置为PAD符号的TS1或TS2有序集(或者其补码,由于极性倒置所致),或者24ms超时后,设备在任意通道(在检测状态期间已检测到连接了接收器)上接收到8个连续的TS1或TS2有序集(或者其补码),并且所有通道都检测电气空闲的退出,将进入到轮询.配置状态。

        5、在轮询.配置期间如果接收器看到TS1/TS2有序集的补码(对于TS1有序集而言接收的是D21.5而不是D10.2,对于TS2有序集而言接收的是D26.5而不是D5.2),将进行极性反转。

        6、在Polling状态机中,还有一个Polling.Speed子状态,该状态的主要作用是调整PCIe链路使用的数据传送率。当一个PCIe链路两端的设备可以支持高于2.5GT/s的数据传送率时,可以首先进入该状态,改变PCIe链路的数据传送率。在许多PCIe设备的具体实现中,并没有使用Polling.Speed子状态。此时在PCIe链路的训练过程中,将缺省使用2.5GT/s的数据传送率。此时LTSSM状态机将首先沿着Detect→Polling→Configuration→L0的路径进入L0状态,并使用2.5GT/s的数据传送率,即便PCle链路两端的设备都支持更高的数据传送率。当PCIe设备改变数据传送率时,需要在L0状态,通过向对端设备发送TS1序列(其speed_change位为1),使PCIe链路两端设备进入Recovery状态后,才能改变缺省使用的数据传送率。所以上图中有个叉。

配置

        在配置状态期间完成以下训练内容:

        链路宽度;

        链路号;

        通道反转;

        极性倒置(如果需要);

        执行通道到通道相位补偿。

        发送器和接收器以协商好的数据速率进行通信。在该状态期间,可以禁用加扰、进人禁用和回环状态,并建立从L0s状态转换到L0状态所必需的FTS有序集的数目。

 

        这个状态重要的是链路宽度和lane number的确认,如上图,两端先互相发送带有link number字段和lane number字段的TS1完成link number和lane number accept,然后发送TS2对之前设定的Link/Lane number进行确认,确认无误就可以进入L0了。

L0

        这是链路正常、完全活动的状态,在该状态期间发送并接收TLP、DLLP和PLP。如果需要切换到高于 2.5 GT/s 的速度传输,则需要进入 Recovery 状态进行链路重训练(Re-Training)。

恢复

        PCIe 链路需要进行重训练(Re-Training)时会进入该状态,可能的原因有:

        1、PCIe链路信号发现error,需要调整Bit Lock和Symbol Lock;

        2、从L0s或者L1低功耗电源状态退出;

        3、Speed Change。因为第一次进入L0状态时,速率是2.5GT/s. 当需要进行速率调整5.0GT/s或者8.0GT/s时,需要进入Recovery状态进行Speed Change. 这个阶段,Bit Lock、Symbol Lock等都需要重新获取;

        4、需要重新调整PCIe链路的Width;

        5、软件触发Re-Training操作;

        6、仅在Gen3和Gen4,需要重新进行Equalization。

        在 Recovery状态,重新建立Bit Lock和Symbol/Block Lock的过程与Polling状态相似,但是要比Polling状态花的时间更短。

L0s

        这是ASPM(Active State Power Management)机制提供的第 1 级低功耗的、活动电源管理状态。从L0s状态转换回L0状态只需很短的时间(因为LTSSM不必经过恢复状态)。当链路处于L0状态时,在发送器发送并且远程接收器接收了电气空闲有序集EIOS后即进入该状态。从L0s状态退出到L0状态涉及到发送和接收FTS有序集。从L0s退出到L0时,必须执行通道到通道的相位补偿,并重新建立比特和符号锁定。

L1

        这是是 ASPM(Active State Power Management)机制提供的第 2 级低功耗状态,比L0s更低。L1退出延迟(通过恢复状态)比L0s退出延迟的时间要长。想要进入 L1 状态,位于PCIe总线两端的设备需要进行协商,然后同时进入L1状态。两种可能的方式如下:

        1、ASPM机制下硬件自动切换。当一端设备的硬件发现没有TLP或者DLLP需要再发送的时候,就会自动和另一端进行协商进入L1状态。如果对端设备同意,则二者同时进入L1状态;如果对端设备拒绝,则本端会进入 L0s 状态。协商过程就是发EIOS,如果PCIe设备的接收逻辑RX从任意Lane中收到1个或者2个EIOS序列后,该设备将进入到L1或者L2状态。当PCIe链路工作在2.5GT/s时,需要发送1个EIOS序列;如果工作在5GT/s时,需要发送2个EIOS序列。注意,只有下游设备(EP或者Switch的上游端口)可以主动“进入L1状态”,而上游设(RC或者Switch的下游端口)必须与下游设备进行协商后才能进入L1状态。

        2、电源管理软件通过命令将设备配置为低功耗状态(D1,D2,D3hot)。此时Upstream Port和Downstream Port上的设备同时进入L1状态。

处于L1状态时,PCIe设备的发送逻辑TX仍然需要维持一个相对较低的DC共模电压。

L2

        这是最低的电源状态。大多数发送器和接收器逻辑都已关闭(除了接收器终端外,其必须加电以使接收器处于低阻抗状态)。尽管Vaux电源可用,但是并不保证主电源

和时钟。这种状态可以通过系统唤醒事件来唤醒。

回环

        该状态用做测试和故障隔离状态。可在每条通道上或在整个所配置的链路上进行测试。回环主(Loopback Master)设备向回环从(Loopback Slave)设备发送TS1有序集,其中的TS1训练控制字段内设置了回环比特。回环从设备接收到两个连续的、设置有回环比特的TS1有序集后,就进入回环状态。

禁用

        该状态允许禁用已配置的链路(如意外删除了远程设备)。在该状态中,发送器驱动器处于高阻抗状态,接收器已启用并且处于低阻抗状态。软件可命令设备进入禁用状态,方法是设置链路控制寄存器中的禁用比特。然后该设备发送16个在TS1训练控制字段中设置了禁用链路比特的TS1有序集。当已连接的接收器接收到设置有禁用链路比特的TS1有序集时,就禁用该接收器。

Hot复位

        进人该状态的情况有:当设备的较高层控制进入该状态,或者当设备接收到两个连续的TS1有序集,并且该有序集的TS1训练控制字段中设置了Hot复位比特。

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

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

相关文章

恭喜!电影《觅渡》入围上海电影节第20届传媒单元大奖

生生不息,念廿不忘; 传媒荣誉,开启在即! 第20届电影频道传媒关注单元 即将迎来20周年 一共有18部影片 入围竞逐年度传媒荣誉 6月16日晚 CCTV-6电影频道、 电影频道融媒体 将现场直播 揭晓传媒荣誉名单 电影《觅渡》入围上…

为你的项目配置日志(AOP+logback)

文章目录 1、导入依赖2、配置文件logback-spring.xml3、使用AOP做日志3.1、自定义注解3.2、自定义aop切面 4、在controller方法上添加注解5、使用Slf4j6、最终参考效果 之前看过logback的配置方法,今天整理spring的知识的时候,又看到了aop,想…

Linux之系统信息和性能监测

一、前言 安装完一套linux操作系统我们首先得知道系统都有哪些信息,比如安装内存多少、磁盘多大、什么版本、多少核CPU等等,因此熟悉常用的查看系统信息的指令还是很有必要的。 此文档主要对已安装的linux系统的属性有个初步的认识,介绍系统…

一起从根上学习Swoole

一起从根上学习Swoole Swoole,这个名字已经不再是一个简单的扩展库,而是一种让PHP开发者们心驰神往的技术。它是一个基于事件驱动的异步网络通信框架,能够让PHP应用程序在高并发环境下实现卓越的性能表现。现在,你也可以像一名高…

ROS:DWA算法解析、move_base导航包DWA源码解析

一.整体思路 1.基于速度控制运动模型 假设没有噪声,控制时间间隔为内机器人速度v和角速度w保持不变,则机器人围绕半径为r的圆周运动。 其中,。 根据v 和w即可预测出下一次机器人位姿(x、y、),根据此也可以…

毕业4年,克服三次瓶颈,最终成功从字节跳动成功跳到阿里!经验分享

介绍下自己的测试历程吧,普通本科,毕业4年, 去年成功转型测试开发,总结一下测试心得。 平凡的大学生活 我大学期间属于并没有什么出众的,按部就班,老实办事的那种学生,我导师对我们那届的学生…

iOS 17(SwiftUI 5.0)带来的图表(Charts)新类型:“大饼”与“甜甜圈”

概览 WWDC 2023 为我们带来了 iOS 17,也为我们带来了 SwiftUI 5.0。 在 SwiftUI 新版中,Apple 增加了很多重磅功能,也对原有功能做了大幅度升级。 对于 Charts 框架, 新增了饼图(Pie)类型并且加入了图…

容器镜像差异分析工具 container-diff

概述 container-diff 是google出的一个容器差异比较工具,通过这个工具可以比较两个镜像之间存在的文件差异、RPM包差异、apt包差异、pip包差异和node包差异。 container-diff 也包括了对单个镜像分析能力,像文件分析啊、apt包、rpm包分析等功能。 在日常…

Python爬虫——怎么搭建和维护一个本地IP池

目录 背景 一、什么是本地代理IP池 二、代理IP池功能架构图 三、各个组件功能说明及示例代码 1. IP池管理器 2. 代理IP获取器 3. IP质量检测器 4、数据存储器 5、API接口层 6、应用程序 总结 背景 在我们进行爬虫工作时,经常需要使用代理IP。大多数代理…

unity2d粒子特效

文章目录 前言先看效果一、2d平台雨1. 配置2. 图片素材3. 最终效果 二、脚步灰尘效果1. 配置2. 代码调用3. 效果 三、受伤血液四溅效果1. 配置2. 效果 待续四、工程源码五、参考六、完毕 前言 我只是我抽空写了一些简单的2d粒子特效,后面如果接触新的不错的2d特效&a…

Maven 安装

一. 下载 apache官网下载 Maven:Maven – Download Apache Maven ,根据需要下载不同压缩包。 将压缩包进行解压,最好放在无中文目录下解压。 二. 安装 三. 配置 1. 配置maven本地仓库 打开解压后的文件夹,找到conf文件夹&#…

银行vr元宇宙全景虚拟展馆提供更加真实、立体、高效的数字资产交易场景

为了贯彻国家普惠金融政策,使金融如无惠及广大群体,宇宙技术在金融行业中的应用将进一步提升金融消费体验感觉和金融管理水平。打造元宇宙金融服务平台,构建虚实结构的金融服务世界,培育和管理好数字机器人员工队伍,提升金融业务各…

postman登录鉴权之接口测试

一.背景 在做接口测试的时候,有些接口向后台请求数据的时候,是需要用户在登录情况下才有数据返回。 以电商平台为例,用户的个人中心,用户的订单列表,用户的支付信息等等,所有用户维度的数据都是需要登录态…

Django - 页面静态化和crontab定时任务(二)

一. 前言 一个网页会有很多数据是不需要经常变动的,比如说首页,变动频率低而访问量大,我们可以把它静态化,这样就不需要每次有请求都要查询数据库再返回,可以减少服务器压力 我们可以使用Django的模板渲染功能完成页面…

app反编译查看是否被混淆或者混淆是否成功

同时打 debug包和release包,生成的目录在build->output文件夹下面 一般直接运行的apk 包是在build/intermediates/apk/debug 目录下 方法1:Android studio 安装插件jadx build成apk 后 直接选中 右键 在Jadx GUI中反编译 就可以查看代码 方法2&…

距离保护的影响因素

1、汲出电流和助增电流的影响 当保护安装处与故障点之间有分支电源时,如图所示,分支电源将向故障点K送短路电流ICB,使流过故障线路的电流IBKIAB ICB,大于实际流过保护1的电流IAB,所以ICB称作助增电流。 由于助增电流的…

第一章操作系统引论

目录 一、熟悉的操作系统 二、计算机系统的层次结构 三、操作系统的概念 四、操作系统的功能 4.1 系统资源的管理者 4.2 向上层提供方便易用的服务 4.2.1 GUI:图形化用户接口(Graphical UserInterface) 4.2.2 命令接口 4.2.3 程序接…

当杠精型AI丈夫遇上阴阳怪气AI老婆,你的代码玩得转吗?

玩趣味活动 赢千元奖金 DataFountain社区首个趣味活动来啦!!! 活动已发车,来不及解释了,先上车:https://www.datafountain.cn/information/activity/3 人工智能问答爆火,你的算法技能储备跟上…

达梦数据库ODBC配置及达梦与mysql创建DBLINK测试

目录 官网ODBC配置... 3 1、ODBC下载官网... 3 2、上传安装包并解压... 3 3、安装odbc. 3 4、安装依赖... 4 5、再次执行安装即可... 4 6、查看版本及配置文件... 4 Mysql-ODBC配置... 5 一、达梦服务器... 5 1、下载odbc包... 5 2、安装... 6 3、报错... 6 4、先…

STM32——01-开发软件Keil5及STM32CubeMX的安装

1.1开发环境的安装 编程语言:C语言 需要安装的软件有两个:Keil5和STM32CubeMX 安装 安装包(不需要太新,以 MDK324 为例,最新的 MDK327 有问题) 安装过程一路下一步即可(建议不要安装在 C …