PCIE链路训练-状态机描述1

状态机描述

Config.linkwidth.start

1.

1Linkup = 0 + 状态机没有执行链路宽度的升级upconfiguration of the Link width):那么tx会在所有activedsp上发送TS1,其中link num为具体内容,lane num为pad;

(2)upconfigure_capable为1(这个变量为1一般表示上层逻辑执行链路宽度的减少),并且状态机没有执行upconfiguration of the Link width,那么自从进入到recovery状态之后,并且在当前子状态下收到了两个连续的TS1,其中link num和lane num均为pad,此后检测到退出Electrical Idle,那么tx会在inactive Lane上发送TS1,其中link num为具体内容,lane num为pad;

那么什么是activelane呢?-dsp/usp均满足

从Polling状态进入此子状态时,所有检测到接收端的通道会被视作Active Lane。从Recovery状态进入此子状态时,所有历经 Configuration.Complete 状态的链路上的通道,都会被视作Active Lane。

另外注意一点,DSP必须在发送的TS1中通告自身所有支持的速率,其中也需要包括端口不打算使用的速率。

此外针对usp,还需要注意,如果此时的状态跳转不是由 LTSSM 超时触发的,那么此时发送方应该在 Configuration 状态中发送的 TS1 中置位 Autonomous Change 比特 (Symbol 4, bit 6) ,表示发送方出于自身(Autonomous )原因想要改变链路宽度,从而进入 Configuration 状态。

2.

1dsp

Linkup = 1 + 状态机执行链路宽度的升级upconfiguration of the Link width):那么tx会在那么会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C:自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle

  Usptx会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C如果upconfigure_capable为1,针对inactive的lane,并且这个lane自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle的lane。

注意三点:

A:如果 USP 打算恢复链路宽度,LTSSM 首先等待下述两个条件任意满足一个:所有待激活的通道上都接收到两个连续的链路编号有效,通道编号为填充符号的TS1或者任意一个待激活通道进入本状态超过1ms

B:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个 TS1,但任何情况下不要等待超过1ms。

C:在激活不工作的通道后,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1

2那么什么时候开始发送link num为具体数值但是lane numpadTS1在满足以下条件之一即可

Dsp

A在发送TS1的lane上收到了收到了两个连续的TS1,并且link num和lane num均为pad;

B:1ms超时;

另外注意两点,在激活不工作的通道时,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1;对于组合为同一链路的通道,他们的链路编号必须相同。只能在支持多链路配置的不同链路之间才可以分配不同的链路编号。

Usp

如果一些通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到链路编号非空的TS1的通道上,回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1

3.针对支持crosslinks特性:

Dsp

会在所有detect阶段检测为receiver的lane上先发送16~32个TS1,其中link num为具体数值,lane num为pad。在此之后,任意一个lane在收到两个连续的TS1,其中link num为具体数值,lane为pad,随后dsp转变为usp(为了根据timeout机制决定谁才是真正的dsp,如果 DSP 接收到的第一批 TS1 中,链路编号就已经不是填充符号了,那么 DSP 通过这种现象就意识到存在交叉链路(Crosslink),链路对端设备此时也是 DSP。针对这种情况,面向下游的通道将转换为面向上游通道,DSP 等待长度随机的超时时间后,重新进入 Configuration.Linkwidth.Start 状态,只不过此时该通道将变成面向上游的通道)。并且转变为Configuration.Linkwidth.Start的条件变为和usp一样。

注意两点,针对两端都想变为dsp的情况,可以让双方都先变为usp,随后双方都随机等一个时间,超时后usp转变为dsp。因为双方的超时时间长度是不同的,最终将有一个端口成为 DSP ,而另一个端口仍然是 USP,这样一来训练就可以继续进行。超时时间长度必须是随机,这样即使链路双方的端口实现完全相同,也不会出现死锁的情况;如果支持交叉链路特性,那么在接收的 TS1 的链路编号从PAD转换到非PAD符号的过程中,不允许出现TS2打断这个过程。

Usp:

对于支持交叉链路特性的 USP 来说,当 LinkUp = 0b 时,需要在所有检测到接收端的通道上至少发送 16-32 个 TS1,其中链路编号和通道编号采用填充符号。随后任何usp的一些通道上接收到了两个连续的链路编号有效,通道编号为填充符号的TS1,那么有如下操作和条件:

A:tx持续发送TS1,link num和lane num均为pad;

B:如果任意通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到连续两个链路编号非空的TS1的通道上(lane编号为lane),回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1下一个状态是 Configuration.Linkwidth.Accept。

C:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 个 TS1,128b/130b 编码时至少等待 34 个 TS1,但任何情况下不要等待超过 1ms。

注意,如果不满足上述条件,经过Tcrosslink时间后,16-32个TS1,其中linknum和lane num均为pad,usp变为dsp,下个状态变为Configuration.Linkwidth.Start(相当于重新开始)。

Config.linkwidth.accept

Dsp

dsp提议通道编号值。如果一条链路可以由多个通道合并组成,这些通道都可以收到两个连续的,链路编号值相同的 TS1那么dsp会为他们发送链路编号一致,但是通道编号各不相同的TS1对于剩下的通道,如果他们没有接收到TS1,那么发送链路编号和通道编号都采用填充符号的TS1,不能打断原有发送过程。

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个TS1,但任何情况下不要等待超过1ms。-dsp/usp均满足

1.变量变化

A:在满足如下条件的时候use_modified_TS1_TS2_Ordered_Set变为1:

(1)LinkUp = 0b -dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送Modified TS1/TS2,在TS1/TS2中设置symbol5中的Enhanced Link Behavior Control field为‘b11。针对up端,要求在所有的TS1/TS2中发送这样的序列

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了Enhanced Link Behavior Control field位为’b11(symbol5)+TS2中的32.0 GT/s data rate is supported设为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

B:在满足如下变化Flit_Mode_Enabled变量设为1:

(1)LinkUp = 0b-dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送相关TS1/TS2,在其中TS1/TS2中设置symbol4中bit0,也就是Flit Mode Supported bit中的Data Rate Identifier为‘b1。-dsp/usp均满足

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了flit mode supported位(也就是symbol4的bit0)为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

usp

usp在从dsp提供的链路编号中选择其中一个,填充至所有通道的TS1中,反馈发送给dsp。这里所有通道指的是那些所有接收链路编号不为填充字符TS1的通道。在所有剩余的通道中,如果检测到对端接收方,但是没有接收到有效链路编号的通道,将继续发送链路编号和通道编号采用填充符号的TS1

如果一个link可以使用具体数值的link num号来实现configured link(注意,这个link num来自于收到的两个连续的TS1,并且这两个TS1中的link numlane num均不为pad,两个连续的TS1中的link numlane num前后一致),那么TS1会发送和收到的TS1link num/lane num一致或不一致的TS1(针对不一致的TS1往往是存在于lane reversed)。

另外注意三点:

1)收到的TS1既可以是标准的TS1,也可以是Modified的TS1(Modified的TS1只有在use_modified_TS1_TS2_Ordered_Set为1的情况下);

2)针对lane进行编号的时候,需要注意,lane num必须要针对连续的groupinglane进行连续的编号,针对没有收到TS1lane,相当于这个lane不属于一个groupinglane。剩下的lane必须要发送link numlane num均设为padTS1

3)比如说一个 x8 链路,将会把它的通道编号为 0-7。端口需要支持链路容纳其所拥有的最大通道数,也需要支持链路容纳最少至一个通道。通道总是从 0 开始编号,并且需要是连续编号不中断的。比如,如果一个 x8 链路上有些通道不工作,它可能可以转而配置成一个 x4 链路,这种情况下它必须使用通道 0-3。再举一个例子,如果是链路的通道 2 无法正常工作,无法使用通道 0134 组成一个 x4 链路,因为它们的编号是不连续的。链路上任何剩余的通道必须发送链路和通道编号都使用填充符号的 TS1

Configuration.Lanenum.Wait

如果use_modified_TS1_TS2_Ordered_Set1,需要注意:

1tx需要发送Modified TS1而不是正常的TS1;

2rx端必须检查是否收到Modified TS1(注意一开始进入这个状态的时候可能还是收到标准的TS1,需要检查的是收到连续的Modified TS1)

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 TS1128b/130b 编码时至少等待 34 TS1,但任何情况下不要等待超过 1ms

Dsp

Configuration.Lanenum.Wait 状态期间,DSP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

Usp

Configuration.Lanenum.Wait 状态期间,USP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

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

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

相关文章

git stash 用法总结

目录 1,介绍场景1:场景2: 2,常用命令2.1,基础2.2,进阶1,存储时指定备注2,通过索引来操作指定的存储3,修改存储规则 2.3,查看 stash 修改的具体内容 1&#xf…

摩尔定律,梅特卡夫定律,吉尔德定律

信息系统的三大定律(摩尔定律,梅特卡夫定律,吉尔德定律)有一个清晰的视角: 信息系统不是左边的生产消费系统,而是右边的交易系统,交易系统与生产消费典型的区别在于信息交易过程会产生新的信息,就像钱一样…

c语言——俄罗斯方块

一、游戏效果 俄罗斯方块 二. 游戏背景 俄罗斯方块是久负盛名的游戏,它也和贪吃蛇,扫雷等游戏位列经典游戏的⾏列。 《俄罗斯方块》(Tetris,俄文:Тетрис)是一款由俄罗斯人阿列克谢帕基特诺夫于1984…

java http

超文本传输协议 超文本/html 工作方式 get / url 请求获取相应报文 http://xxxxxxxxxxxx.com/user?xxx xxx 协议类型 - 服务器地址 -路径 path 请求格式: head / body path路径进行处理资源 等同于报文请求: GET: /users HTTP/1.1 Host:api.github.com 响应报文 请求方式…

京东数据分析平台(京东运营数据采集):2023年10月京东白酒品牌销售排行榜

鲸参谋监测的京东平台10月份白酒市场销售数据已出炉! 鲸参谋数据显示,10月份,京东平台上白酒的销量为340万,环比增长约16%,同比增长约37%;销售额为28亿,环比增长约20%,同比增长约122…

如何在Ubuntu的Linux系统中安装MySQL5.7数据库

前往MySQL数据库官网链接地址下载5.7数据库。 MySQL :: Download MySQL Community Server (Archived Versions)使用ssh的可视化工具将下载的mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz文件上传到Linux服务器,并解压文件 tar -zxvf mysql-5.7.40-linux-glibc2.12-x…

基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码

基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蛇优化优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

大数据预处理技术

文章目录 前言 大数据技术成为前沿专业 也是现在甚至未来的朝阳产业,大数据有分别是 数据预处理 数据存储 大数据处理和分析 数据可视化 部分组成 ,大数据行业有数据则称王,大数据的核心是数据本身 怎么获取有价值的数据呢?本章讲…

Cent OS 8.2 安装 自定义硬盘 固定IP VMware

时间:20231122 环境:win11 、VMware 16 pro、Cent OS 8.2 说明:自定义安装方法、自定义硬盘分区、固定IP且能联网 1、使用自定义的方式安装虚拟机 此处选择典型,则会自动安装系统,无法自定义硬件以及配置信息 选择…

CCF CSP认证 历年题目自练Day49

题目一 此题用暴力枚举做过(80分)现如今终于用二维前缀和做到满分。 试题编号: 202309-2 试题名称: 坐标变换(其二) 时间限制: 2.0s 内存限制: 512.0MB 问题描述: 问题…

NFC:应用场景广泛的短距离通信技术

NFC:应用场景广泛的短距离通信技术 一、NFC 技术介绍1.1 NFC 技术应用场景1.2 NFC 技术优点1.3 NFC 工作原理 二、NFC 开发2.1 NFC 应用开发流程2.2 NFC 读取和写入2.3 NFC 读写功能示例 三、总结 一、NFC 技术介绍 NFC (Near-field communication&…

分类预测 | Matlab实现基于PSO-PNN粒子群算法优化概率神经网络的数据分类预测

分类预测 | Matlab实现基于PSO-PNN粒子群算法优化概率神经网络的数据分类预测 目录 分类预测 | Matlab实现基于PSO-PNN粒子群算法优化概率神经网络的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现基于PSO-PNN粒子群算法优化概率神经网络的数据…

hadoop在本地创建文件,然后将文件拷贝/上传到HDFS

1.要$cd {对应目录}进入到对应目录,一般为 cd /usr/local/hadoop/ 2.创建文件,$sudo gedit {文件名},例 sudo gedit test.txt 然后在弹出的txt文件输入内容,点击右上角的保存之后,关闭即可。 3.拷贝本地文件到HDF…

RPG项目_UI登录

首先创建一个项目 将资源包导进Resources文件夹 创建一个Scripts脚本文件夹 然后再对Scripts脚本文件夹分门别类 导入UI资源包 创建一个Image 按住Alt 选择右下角 image就会覆盖整个面板 修改image名字为BG 将image图片放置背景栏 再创建一个image 改名为MainMenu 修改MainMenu…

Linux上通过SSL/TLS和start tls连接到LDAP服务器

一,大致流程。 1.首先在Linux上搭建一个LDAP服务器 2.在LDAP服务器上安装CA证书,服务器证书,因为SSL/TLS,start tls都属于机密通信,需要客户端和服务器都存在一个相同的证书认证双方的身份。3.安装phpldapadmin工具&am…

一点DETR学习

DETR: 主要是为了学习query。 主要从两个方面:加偏好和缩短序列长度

〖大前端 - 基础入门三大核心之JS篇㊶〗- DOM事件传播和事件监听方法addEventListener()

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

ABAP调用Https接口 Ssl证书导入

ABAP调用Https接口 Ssl证书导入 一、证书导入 谷歌浏览器打开对方系统URL地址,下载SSL Server certificate,步骤如下: 浏览器打开要导出certificate(证书)的网站,点击这个小锁的图标: 点击连接是安全的后面小播放按钮 点击证…

系列七、ThreadLocal为什么会导致内存泄漏

一、ThreadLocal为什么会导致内存泄露 1.1、ThreadLocalMap的基本结构 ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也是独立实现的。源码如下: 1.2、ThreadLocal引用示意图…

分享一篇很就以前的文档-VMware Vsphere菜鸟篇

PS:由于内容是很久以前做的记录,在整理过程中发现了一些问题,简单修改后分享给大家。首先ESXI节点和win7均运行在VMware Workstation上面,属于是最底层,而新创建的CentOS则是嵌套后创建的操作系统,这点希望…