首先,所谓LTSSM,即:Link Training and Status State Machine(链路训练及状态机)

下图为 LTSSM 的状态机及训练过程:

poYBAGMDrVmAL_fgAACkfb-bRc4659.png

LTSSM 包含 11 个顶层状态:Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、Hot Reset、Loopback 和 Disable。这些状态可以分为 5 类:

Link Training states(链路训练状态)
Re-Training(Recovery)state(重训练状态)
Software driven Power Management State(由软件控制的电源管理状态)
Active-State Power Management(ASPM)states(动态电源管理状态)
Other states(其他状态)


①各种复位(Reset)之后,状态机的改变为:Detect => Polling => Configuration => L0。在 L0 状态下即可进行标准数据交互。

②链路的 Re-Training 状态也称为 Recovery(恢复)状态。链路进入 Re-Training 状态的原因有多种,例如从低功耗链路状态(如 L1)退出、改变带宽(改变速率或者宽度)等。在该状态下,链路会根据需要重新执行一部分链路训练的流程,然后进入 L0 状态。

③电源管理软件能将设备(Device)切换到低功耗设备状态(D1,D2,D3Hot 或者 D3Cold),这会导致链路进入对应的低功耗链路状态(L1 或者 L2)。

④在某一时刻,如果没有数据在传输,那么 ASPM 硬件可以自动将硬件切换到功耗较低的 ASPM 状态(L0s 或者 ASPM L1)。

另外,软件还可以将链路设置为其它的一些特殊状态:Disabled,Loopback 或者 Hot Reset。


1. Detect 状态

当 PCIe 链路被复位或者数据链路层通过填写某些寄存器之后,LTSSM 将进入该状态。
当 PCIe 链路进入该状态时,发送逻辑 TX 并不知道对端接收逻辑 RX 的存在,因此需要使用 Receiver Detect 识别逻辑判断对端接收逻辑 RX 是否可以正常共工作,之后才能进入其他状态。那么TX怎么去判断对端设备呢?

如下图,Detect状态包含了两个子状态:Detect.Quiet和Detect.Active

pYYBAGMDrVmAB66AAABWg7-KUB4846.png

2. Polling 状态
当 PCIe 链路进入该状态时,将向对端发送 TS1 和 TS2 Ordered Sets(2.5 GT/s),并接收对端的 TS1 和 TS2 Ordered Sets(2.5 GT/s)。

通过接收到的 TS1 和 TS2 序列,完成如下操作:

获取 Bit Lock
获取 Symbol Lock 或者 Block Lock
如果需要,纠正 lane polarity inversion(差分信号极性反转)
检测支持的速率
PCIe 链路处于该状态时,将进行 Loopback 测试,确定当前使用的 PCIe 链路可以正常工作。


3. Configuration 状态
发送逻辑 TX 和 接收逻辑 RX 继续以 2.5 GT/s 的速度交换 TS1 和 TS2 Ordered Sets,完成如下任务:

确定 Link Width
指定 Lane Number
根据需要,对 Lane reversal 进行检查并对其进行纠正
处理 Lane-to-Lane 时序的偏差
Configuration 状态下,scrambling 可以关闭,该状态可以切换到 Disabled 状态或者 Loopback 状态。
在 TS1 和 TS2 中,还指定了 L0 状态切换到 L0s 状态所需要的 FTS Ordered Sets 的个数。


4. L0 状态
L0 状态是 PCIe 链路的正常工作状态。该状态下,PCIe 链路可以正常发送和接收 TLP、DLLP 和 Ordered Sets。如果需要切换到高于 2.5 GT/s 的速度传输,则需要进入 Recovery 状态进行链路重训练(Re-Training)。


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

L0 状态出现错误
从 L1 状态切换到了 L0 状态
从 L0s 状态切换到了 L0 状态,但是使用 FTS 流程并没有将链路训练到可用状态
在 Recovery 状态,重新建立 Bit Lock 和 Symbol/Block Lock 的过程与 Polling 状态相似,但是要比 Polling 状态花的时间更短。


6. L0s 状态
L0s 是 ASPM(Active State Power Management)机制提供的第 1 级低功耗状态,该状态可以在较短的时间内切换到 L0 状态。当设备要从 L0 状态切换到 L0s 状态时,需要向外发送 EIOS。当设备要从 L0s 状态切换到 L0 状态时,需要向外发送多个 FTS,从而快速获取 Bit Lock 和 Symbol/Block Lock。


7. L1 状态
L1 是 ASPM(Active State Power Management)机制提供的第 2 级低功耗状态,它的功耗比 L0s 低,但是需要更长的时间才能切换到 L0 状态。想要进入 L1 状态,位于 PCIe 总线两端的设备需要进行协商,然后同时进入 L1 状态。两种可能的方式如下:

ASPM 机制下硬件自动切换。当 Upstream Port 的硬件发现没有 TLP 或者 DLLP 需要再发送的时候,就会自动和 Downstream Port 进行协商进入 L1 状态。如果 Downstream Port 同意,则二者同时进入 L1 状态;如果 Downstream Port 拒绝,则 Upstream Port 会进入 L0s 状态。
电源管理软件通过命令将设备配置为低功耗状态(D1,D2,D3hot)。此时 Upstream Port 和 Downstream Port 上的设备同时进入 L1 状态。

8. L2 状态
L2 状态是ASPM(Active State Power Management)机制提供的第 3 级低功耗状态,此时设备的主电源被关闭,从而达到更低的功耗。该状态下,几乎所有的逻辑都被关闭,只有一小部分使用 Vaux 供电的逻辑在工作,该部分逻辑可以用来发送 wakeup 事件。

支持 wakeup 功能的 Upstream Port 能向外发送一个低频信号,该信号称为 Beacon。Downstream Port 将 Beacon 信号转发给 Root Complex。通过 Beacon 或者 WAKE# 引脚,设备可以要求系统恢复它的主电源供电。


9. Loopback 状态
该状态是用来测试的,但是协议并没有明确规定 Receiver 在该状态下做些什么。基本的操作很简单:设备 A 作为 Loopback Master,连续对外发送两个 TS1 Ordered Sets,并且 TS1 的 Training Control 区域的 Loopback 位需要设置为 1。设备 B 接收到连续两个 Loopback 位为 1 的 TS1 之后,就会进入 Loopback state,称为 Loopback Slave。Loopback Slave 会将收到的所有内容再发送给 Loopback Master,从而形成回环,验证链路的完整性。


10. Disable 状态
系统软件可以通过设置寄存器,使 PCIe 链路进入 Disabled 状态。当 PCIe 链路的对端设备被拔出时,LTSSM 也需要进入该状态。

该状态下,发送端设备处于 Electrical Idle 状态,接收端设备处于低阻抗状态。对于链接已经变得不可靠或者设备被意外移除时,这种状态很有必要。

系统软件配置 Link Control register 的 Disable 位之后,该设备会对外发送 16 个 TS1 Ordered Sets,这些 TS1 的 Training Control 区域的 Disable Link 位需要设置为 1。接收设备在收到这 16 个 TS1 之后,进入 Disabled 状态。


11. Hot Reset 状态
系统软件将 Bridge Control register 的 Secondary Bus Reset 位设置为 1 之后,Bridge 的 downstream port 会对外发送多个 TS1 Ordered Sets,这些 TS1 的 Training Control 区域 Hot Reset 位必须被设置为 1。接收设备收到连续 2 个这种 TS1 之后,必须对设备进行复位。

当处理器系统进行 Hot Reset 操作时,PCIe 链路将进入 Recovery 状态,然后进入 Hot Reset 状态进行 PCIe 链路的重训练。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32传感器模块编程实践(十五)DIY语音对话控制+满溢检测智能垃圾桶模型

文章目录 一.概要二.实验模型原理1.硬件连接原理框图2.控制原理 三.实验模型控制流程四.语音控制垃圾桶模型程序五.实验效果视频六.小结 一.概要 以前介绍的智能垃圾桶模型都是通过超声波模块感知控制,这次介绍一款新的智能垃圾桶,直接使用语音交互模块…

[bat-cli] docs | 控制器

链接:https://github.com/sharkdp/bat 前文传送: 【探索Linux命令行】从基础指令到高级管道操作的介绍与实践【Linux命令行】从时间管理->文件查找压缩的指令详解【Linux】1w详解如何实现一个简单的shell docs:bat bat 是一个*…

无线自动信道调整

通过信道调整功能,可以保证每个AP 能够分配到最优的信道,尽可能地 减少和避免相邻信道干扰,而且通过实时信道检测,使AP 实时避开雷达,微波炉等干扰源。 动态信道调整能够实现通信的持续进行,为网络的可靠传…

ios面试八股文

​​Swift 语言特性​​:请解释一下 struct和 class的主要区别。特性​​​​struct (值类型)​​​​class (引用类型)​​​​类型本质​​值类型 (复制时创建独立副本)引用类型 (复制时共享同一实例)​​内存分配​​通常在栈上 (更快速)在堆上 (需要ARC管理)​​…

IntelliJ IDEA 2023更新git凭据

背景:已知原来从远程仓库获取的项目,需要更新git用户和密码,但是又不想删除本地项目环境(不想重新获取新建项目)。报错:remote: HTTP Basic: Access denied. The provided password or token is incorrect …

Docker 容器 OOM:从资源监控到JVM调优的实战记录

人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆格拉德威尔 🌟 Hello,我是Xxtaoaooo! 🌈 “代码是逻辑的诗篇&#xff…

【开题答辩全过程】以 基于微信小程序的宠物领养系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

【可信数据空间-连接器状态监控-Java代码集成】

可信数据空间-连接器状态监控-Java代码集成一、 核心概念1. Micrometer2. Micrometer Registry Prometheus3.Prometheus二、 依赖配置 (Maven)三、 集成步骤与代码示例场景一:在 Spring Boot 应用中集成(最简单)1. 添加依赖(如上所…

反编译分析C#闭包

一、问题描述:比如有这样的代码:它的输出结果是 3,3,3。通过搜索得知这一现象是因为C#闭包导致的.我们借助ILSpy看下IL中间代码,首先它生成了一个名叫DisplayClass的类,类中定义了i的字段主代码&#xff1a…

卷积神经网络(CNN):从图像识别原理到实战应用的深度解析

目录一.CNN的技术必要性:破解传统图像处理的两大核心痛点痛点1:特征依赖人工设计,通用性差痛点2:全连接网络参数爆炸,训练难收敛二.CNN的核心原理:两大机制与分层感知逻辑1.核心机制1:局部连接&…

用 SPL 编写阿里云 FC2.0 函数

前言 在数字化转型持续加速的背景下,企业越来越多地将业务逻辑以服务化方式部署至云端。阿里云函数计算(Function Compute,简称FC)作为一种无服务器计算平台,屏蔽了底层资源运维的复杂性,使开发者能够专注…

AR 巡检与普通巡检有哪些区别,有哪些优势|阿法龙XR云平台

AR 巡检(增强现实巡检)与普通巡检(传统人工巡检)在技术应用、效率、准确性等多个维度存在显著差异,具体区别如下: 1. 巡检方式更智能 普通巡检:依赖人工现场观察,主要通过眼看、手…

Java中的volatile关键字详解

核心作用:解决可见性和有序性问题volatile 的主要作用可以归结为两点:1.保证变量的可见性 和 禁止指令重排序。2.它提供了一种轻量级的同步机制,3.但需要注意的是,它不能保证原子性。保证可见性:什么是可见性问题&…

【Linux】MySQL数据目录迁移步骤(含流程图踩坑经验)

在生产环境中,有时候你会遇到一些看似简单但实际上很棘手的问题。最近我就碰到了一次典型的服务器磁盘空间告急,最后通过迁移 MySQL 数据目录成功解决了问题。本文记录整个过程,包括我的分析思路、迁移步骤、踩坑和经验总结,希望对…

数据驱动下的连锁模式复制:技术科普与方法论深度解析

前言在连锁经营的赛道上,“复制”是核心命题,但绝非简单的“粘贴”。当行业进入数字化深水区,数据驱动正成为连锁模式突破增长瓶颈、实现高效复制的“隐形引擎”。本文将从技术科普与方法论心得两个维度,深度拆解数据如何重塑连锁…

数据库学习MySQL系列2、Windows11系统安装MySQL方法一.msi安装详细教程

方法一.msi安装详细教程 Windows系统下MySQL——.msi安装详细教程(默认--只安装服务端“Server only”)MySql官网地址:https://www.mysql.com/;快速下载通道请单击→ No thanks, just start my download.ps:其他资源(…

html+css+vue实现增删改查

代码如下&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>优化版 Vue.js CRUD 示例&l…

(计算机网络)DNS解析流程及两种途径

在计算机网络中&#xff0c;DNS&#xff08;Domain Name System&#xff09;用于 将域名解析为 IP 地址。一个完整的解析过程涉及 递归查询、迭代查询&#xff0c;以及多个关键角色&#xff08;LDNS、本地域名服务器&#xff1b;根服务器&#xff1b;顶级域名服务器&#xff1b…

数据结构——队列(Java)

一.基本概念 队列用来存储逻辑关系为“一对一”的数据&#xff0c;是一种“特殊”的线性存储结构。 特点&#xff1a; •先进先出&#xff1a;队列中元素的添加&#xff08;入队enqueue&#xff09;和移除&#xff08;出队dequeue&#xff09;遵循先进先出的原 则。 •端点&…

【Go】:mac 环境下GoFrame安装开发工具 gf-cli——gf_darwin_arm64

当前主要是关于gf_darwin_arm64的安装步骤 如何快速给mac电脑安装gfgf是什么安装步骤方法1&#xff1a;去github下载gf-cli去git上下载对应电脑版本的gf-cli验证下载文件是否二进制文件授予该文件权限方法2&#xff1a;去goframe官网教你下载步骤验证gf是否安装成功可能遇到的问…