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

Recovery

Recovery.RcvrLock

1)如果link是在8.0GT/s或以上的速率工作,那么rx只会认为当前lane获得Block alignment之后收到的TS0TS1TS2是有效的。如果进入当前状态是从L1recovery.speedL0s,获取Block alignment的过程必须在发生退出Electrical Idle的条件之后;如果当前状态是从L0状态进入的,那么Block alignment的过程必须在获取last data streamend之后。

2如果link是在8.0GT/s或以上的速率工作,且start_equalization_w_preset为1:

针对使用preset value的情况:

a:一旦开始了数据传输,并且要求执行equalization,Usp必须在tx使用rx收到的连续8个TS2中的preset value(黄色字体???)。lane上如果收到了不持的或者是reserve的preset value,那么可以根据实现具体使用一种方式来处理tx端发送的preset value。

b:如果需要执行equalization,dsp根据如下准则在tx端执行preset value:

如果当前数据传输速率是16.0GT/s或32.0GT/s,那么会在最近从Recovery.Rcvrcfg状态转变到当前状态过程中收到的八个连续的EQ TS2(针对equalization bypass to 32.0 GT/s is to be performed)或者128b/130b EQ TS2中收到的支持的tx preset value。否则的话,如果tx preset value在Lane Equalization Control Register Entry中的Downstream Port Transmitter Preset field中有定义,可以使用其中的值。

针对8.0GT/s -> tx preset value定义在每一个lane中的Lane Equalization Control Register Entry。如果当前寄存器中的值不是reserved的话,那么8.0GT/s下的dsp receiver可以使用lane Equalization Control Register Entry中的preset hint field。

针对16.0GT/s、32.0GT/s、64.0GT/s,dsp在16.0GT/s、32.0GT/s、64.0GT/s速率下的tx preset value分别在16.0GT/s、32.0GT/s、64.0GT/s Equalization Control Register Entry中。

注意不采用a、b两种方式的话,需要根据具体的实现决定一种决定tx preset value的方式,下个状态是Recovery.Equalization。

针对使用pre-cursorcursorpost-cursor来说

a:如果当前状态是从recovery.equalization状态进入的,在发送的TS1中,dsp必须要设置pre-cursor,cursor,post-cursor域,注意如果在recovery.equalization状态下收到的最后一个请求是含有preset的request,那么tx必须在将Transmitter Preset bits设为收到的request中的preset值。

b:建议的做法是在发送的TS1中把pre-cursor,cursor,post-cursor均设置为当前的cursor设置,将Transmitter Preset bits设置为最近的tx preset设置。

c:Recovery.RcvrLock 状态满足下述条件后,转移至 Recovery.RcvrCfg 状态。如果双方接收到 8 个连续的 TS1 或者 TS2 序列,其中链路与通道编号与发送的数值一致,并且序列中的 speed_change 比特为0;收到8个连续的TS0,并且是从Recovery.speed状态下进入当前状态;收到了8个连续的TS1,其中EC位为0;

d:如果dsp的当前状态不是从configuration.idle状态或者recovery.idle状态下进入,并且link control3寄存器中的perform equalization位设为1,那么下个状态时Recovery.Equaliztion状态;

e:如果当前速率是8.0GT/s,16.0GT/s,32.0GT/s,那么当前port必须确保在recovery.rcvlock状态下在在发送TS1(这个TS1是进入recovery.equalization状态需要的TS1)前不能发送超过两个EC为0的TS1;

f:如果当前速率是64.0GT/s,那么当前port必须确保在recovery.rcvlock状态下在在发送TS0(这个TS0是进入recovery.equalization状态需要的TS0)前不能发送超过两个EC为0的TS0;

(3)在离开configuration状态后,tx在所有的配置lane上发送link num和lane num均相同的TS1。如果directed_speed_change设为1,那么speed_change 位(bit 7 of the Data Rate Identifier Symbol in TS1 Ordered Set)必须设为1。如果接收到8个连续的 speed_change 比特为 1 的 TS1 序列后,也会同样将其内部变量 directed_speed_change 设置为 1。Non-flit mode下,TS1中的N_FTS值反应了当前操作下的速率。设备在进入当前状态时允许改变其advertise的data rate。

Dsp如果是从2.5GT/s或5.0GT/s转化到8.0GT/s或者32.0GT/s并且Equalization Bypass to Highest NRZ Rate是支持的,那么dsp准备重做equalization过程。整个过程如下:a:发送EQ TS1,其中speed_change为1,并且根据转变的目标速率在Data Rate Identifier上设定相应的值;b:如果硬件发起的equalization的重做过程,那么硬件必须确定2.5GT/s5.0GT/sdata rate;c:如果软件发起的equalization的重做过程,那么软件必须确定2.5GT/s5.0GT/sdata rate??

4)如果dsp是从8.0GT/s16.0GT/s,或者16.0GT/s32.0GT/s或者32.0GT/s64.0GT/s的速率变化引起的重做equalization过程,那么需要执行如下步骤:a发送TS1,Equalization Redo为1,speed_change为1,并且根据转变的目标速率在Data Rate Identifier上设定相应的值;b:如果硬件发起的equalization的重做过程,那么硬件必须确定16GT/s32GT/s64GT/sdata rate;c:如果软件发起的equalization的重做过程,那么软件必须确定16GT/s32GT/s64GT/sdata rate??

5Usp需要在recovery.rcvrcfg中发送的TS2advertise最高的支持速率,而在TS1中是否advertise是一个可选项。除非usp确认在该速率下存在可靠性问题,并且无法靠均衡解决,如果一个usp

a:连续接收到 8 speed_change 比特置为1EQ TS1/EQ TS2

b:或者收到的TS1/TS2Equalization Redo bit为1或128b/130b EQ TS2 Ordered Sets中的speed_change为1.收到两个条件之一能改变支持的速率 在其他条件下,设备不能改变在此状态下(或者Recovery.RcvrCfg 或 Recovery.Equalization)支持的速率。进入此状态后successful_speed_negotiation清为0。

注意,以下几点:

aDSP 如果想将速率切换到 8GT/s 并且重新进行均衡的话,需要发送 speed_change 比特置为 1,并且速率声明为 8GT/s EQ TS1 序列。如果一个 USP 连续接收到 8 speed_change 比特置为 1,并且速率声明支持 8GT/s EQ TS1 或者 EQ TS2 序列后,USP 也会宣告支持使用 8GT/s 速率,除非 USP 确认在该速率下存在可靠性问题,并且无法靠均衡解决。值得注意的是,任意端口可以在进入 Recovery 状态时,改变其通告支持的速率,但需要确保自身可以稳定可靠地支持这一速率。除了上述这种情形外,端口在 Recovery.RcvrLock 状态,Recovery.RcvrCfg 状态以及 Recovery.Equalization 状态中,不得改变自己通告的支持速率。

b:在 Recovery.RcvrLock 状态中,USP可以指定DSP 5GT/s 速率下使用的去加重等级系数(de-emphasis level)。USP 通过 TS1 序列中的Selectable De-emphasis bit (bit 6 of Symbol 4),来指定 DSP 的数值设置。但是 DSP 有可能会因为链路上的比特错误,无法接收到 USP 发送的这一信息,所以 USP 可以在因为速率切换进入 Recovery 状态后,可以再次指定 DSP 的去加重等级。如果 DSP 打算采用 USP 所要求的的数值,那么 DSP 必须在 Recovery.RcvrLock 状态中记录接收到的Selectable De-emphasis bit数值

c:在进入 Recovery.RcvrLock 状态时,TS1 序列接收方也可以被指定新的发送电压数值。接收方会在进入该状态时采样一次链路控制寄存器2 Link Control 2 register)中的 Transmit Margin 比特,并且保持该数值有效,直到下一次从 L0, L0s, 或者 L1 进入到 Recovery 状态,采样到新的数值为止。

6)在将inactivelane进行activating之后,tx需要在exiting Electrical Idle和发送TS1之前等待其tx端的共模电压稳定(除了退出L1.2L1pm状态,此时PCIe链路可以在L1.0期间被动地尝试重新建立同步,并在recovery期间主动地尝试恢复同步。为了确保common mode在recovery.rcvrlock状态下已经建立,dsp需要做一个timer,dsp只有在自从在任意的配置lane上检测到electrical idle exit之后timer达到最小的TCOMMONMODE值之后才可以发送TS1)。

 

需要注意的是,在上述192ns之内、对端进入Recovery.Rcvrlock之后,在一个新的Transmit Margin field变为有效之前,bit lock和symbol/block alignment执行完之后电压水平可能会发生变化。在这情况下rx需要重新获取bit lock和symbol/block alignment。

注意:a:针对发起速率变化的那一侧,在L0或L1状态下directed_speed_change变量设为1。针对没有主动发起速率变化的那一侧,如果收到了TS中的speed change位设为1,那么directed_speed_change变量也设为1,如果进入recovery.speed状态下,directed_speed_change变量设为0;b:如果是收到第一个TS之前就进入到L0,设备需要接收所有正确的TLP和DLP。如果是在128/130b的模式下,收到的TLP/DLP遵循128b/130b解码规则。

(7)Recovery.RcvrLock 状态满足下述条件后,转移至 Recovery.RcvrCfg 状态:如果双方接收到 8 个连续的 TS1 或者 TS2 序列,其中链路与通道编号与发送的数值一致,并且序列中的 speed_change 比特与本地变量 directed_speed_change 一致,并且 EC 域数值为 00b (即无需进行均衡训练),并且当前速率是8.0GT/s或者更高的速率。

a:如果设置了 Extended Synch 比特,那么在进入 Recovery.RcvrCfg 状态之前,必须最少发送 1024 个连续的 TS1 序列。

b:如果原先是从 Recovery.Equalization 状态进入当前次状态,那么 USP 需要比较所有通道上接收的equalization coefficients或者 preset值,将他们和均衡的 Phase2 中所接收的最终系数集(final set of coefficient)或者 preset 进行比较。如果他们数值不一致,那么 USP 会将其发送的 TS2 序列中的 Request Equalization 比特设置为 1。

24ms 超时后,根据下列条件进行状态跳转:

(8)转移至 Recovery.RcvrCfg 状态

如果同时满足下述两个条件,那么接下来转为 Recovery.RcvrCfg 状态:

a:接收到 8 个连续的 TS1 或者 TS2 序列,其中链路与通道编号与发送的数值一致,并且序列中的 speed_change 比特为 1。

b:当前速率高于 2.5 GT/s,或者 TS1/TS2 中表示还支持至少一种更高的速率设置,也就是发送的TS1中的data rate identifiers或者接收的8个连续的TS1/TS2中支持高于2.5GT/s的速率。

(9)转移至 Recovery.Speed 状态

如果满足下述两个条件中的一个,那么接下来转为 Recovery.Speed 状态:

a:如果当前速率设置高于 2.5 GT/s,但是自从进入 Recovery 状态后,从来没能在该速率下正常工作过,(变量 changed_speed_recovery 被清除为 0 揭示了这种现象)。此时,待离开 Recovery.Speed 状态后,速率会重新降低为 2.5 GT/s(针对8b/10b或128b/130b是2.5 GT/s,针对1b/1b是32 GT/s)。

b:如果变量 changed_speed_recovery 被设置为 1,表示某个高于 2.5 GT/s 的速率已经能够正常工作,但是在切换到新的协商速率后,链路不能工作,这种情况下速率会被恢复为由 L0 或者 L1 进入 Recovery 状态前的数值。

 

(10)转移至 Configuration 状态(下列条件满足的情况下directed_speed_change设为0)

a:如果没有发起速率改变请求,(即自从进入Recovery 状态之后directed_speed_change 变量为 0,并且 TS1/2 中的 speed_change 比特也为 0),并且任何配置的lane上收到了至少一个TS1或TS2,并且受到的TS1/TS2的link num和lane num和tx在这些所对应的lane上发送的一致。

b:双方协商后发现彼此同时支持的最高速率只是 2.5 GT/s(根据受到的TS1或TS2),并且directed_speed_change变量为0,收到的TS1/TS2中的speed_change为0;

(11)转移至 Detect 状态

如果上述条件都没能满足,那么接下来转移至 Detect 状态

(12)转移至 Recovery.Equalization 状态

当数据速率为 8 GT/s 时,数据通道必须采取合适的均衡参数,以获得良好的信号完整性。本节的内容并不适用于更低速的速率。对于运行在 8GT/s 速率的链路来说,他们并不是每次进入 Recovery 状态时,都需要经过 Recovery.Equalization 次状态。链路只会在满足下述情况时,才会进入 Recovery.Equalization 状态:

如果内部变量 start_equalization_w_preset 设置为 1,那么:

a:USP 需要在转为 8.0 GT/s 速率之前,采样其接收的连续 8 个 TS2 中的 preset 数值。USP 必须采用其中的发送端 preset,可以选择是否采用其中的接收端 preset。

b:DSP 进入 8.0 GT/s 速率后,必须采用其通道均衡控制寄存器( Lane Equalization Control register )中的发送端 preset,可以选择是否采用其中的接收端 preset。

否则(即该变量不为 1),发送端必须采用在上一次均衡过程中协商一致的参数(coefficient)设置。

a:如果 USP 接收到 8 个连续的 TS1 序列,其中链路与通道编号与发送的数值一致,并且序列中的 speed_change 比特为 0,但是 EC 域数值不为零时,下一个状态为 Recovery.Equalization。因为接收到上述 TS1 序列表示 DSP 希望重新进行均衡中的部分流程。协议中提到,DSP 可以在上层软件要求,或者其他具体实现决定的情况下,发起该请求。当然,DSP 必须保证进行该操作的时间,不能导致该传输超时,也就是说,DSP 需要保证发起该请求前,链路上没有正在进行中的传输。

b:在上层协议要求后,DSP 即进入 Recovery.Equalization 状态,但是不能由 Configuration.Idle 或者 Recovery.Idle 状态直接进入 Recovery.Equalization 状态。(译注:需要通过 Recovery.RcvrLock 次状态进入)协议规定在 DSP 通过发送 EC 不为 0 的 TS1 要求对端重新进行均衡过程之前,不能发送超过两个 EC=00b 的 TS1 序列。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis报错3

INFO: Initializing SpringDispatcherServletdispatcherServlet

Echarts title标题配置项的使用 更改颜色 副标题

title配置项主要是对图表的标题进行配置 title配置项所有属性文档 title: { ...... }设置标题 副标题 text: 简单创建柱形图,//图表标题 subtext: 副标题,如果想对副标题设置 超链接 边框 颜色 宽度…等 比如:设置超链接 sublink:‘…’, 设置标题位置…

nodejs+vue+python+PHP+微信小程序-婚纱摄影预约系统的设计与实现-安卓-计算机毕业设计

本婚纱摄影预约系统主要包括个人中心、套系风格管理、用户管理、摄影师管理、婚纱套系管理、婚纱套系订单管理、客片欣赏管理、客户样片管理、摄影咨询管理、客户选片管理、系统管理等多个模块。它帮助婚纱摄影预约实现了信息化、网络化,通过测试,实现了…

Vue+ElementUI+C#技巧分享:周数选择器

文章目录 前言一、周数的计算逻辑1.1 周数的定义1.2 年初周数的确定1.3 周数的计算方法 二、VueElementUI代码实现2.1 计算周数2.2 获取周的日期范围2.3 根据周数获取日期范围2.4 控件引用2.4.1 控件引用代码分析2.4.2 初始化变量代码分析 2.5 周数选择器完整代码 三、C#后端代…

Java8实战-总结49

Java8实战-总结49 CompletableFuture:组合式异步编程对多个异步任务进行流水线操作构造同步和异步操作将两个 CompletableFuture 对象整合起来,无论它们是否存在依赖 CompletableFuture:组合式异步编程 对多个异步任务进行流水线操作 构造同…

设计模式—接口隔离原则(ISP)

1.背景 2002 年罗伯特C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立…

【如何修改输入法切换键】

操作 以win10为例,点开系统设置,选择时间和语言 选择语言,找到首选语言中的中文,点击选项 点击其中的微软输入法 选择按键 在按键中进行输入法切换按键的选择

流量分析-PhishingEmail_WriteUp

一、题目问题 问题1:黑客的email名称 问题2:黑客向几人发送了钓鱼邮件 问题3:黑客传输的木马文件名 问题4:下载并运行了木马文件的人的email名称和ip地址,用“-”连接 问题5:黑客用于反弹shell的主机i…

Java游戏制作——王者荣耀

一.准备工作 首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 创建一个名为“img”的文件夹来储存所需的图片素材。 二.代码呈现 package com.sxt;import javax.sw…

大屏可视化编辑器

前言: 乐吾乐Le5le大屏可视化设计器,零代码实现物联网、工业智能制造等领域的可视化大屏、触摸屏端UI以及工控可视化的解决方案。同时也是一个Web组态工具,支持2D、3D等多种形式,用于构建具有实时数据展示、监控预警、丰富交互的组…

【算法】链表-20231127

这里写目录标题 一、面试题 02.02. 返回倒数第 k 个节点二、82. 删除排序链表中的重复元素 II三、141. 环形链表 一、面试题 02.02. 返回倒数第 k 个节点 提示 简单 130 相关企业 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本…

设计模式之十二:复合模式

模式通常被一起使用,并被组合在同一个解决方案中。 复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 首先重新构建鸭子模拟器: package headfirst.designpatterns.combining.ducks;public interface Quackable …

Java小游戏飞翔的小鸟

游戏界面 运行界面 开发准备 1、eclipse开发工具 二、创建游戏窗口 Mains类作为主类,在mian方法下定义一个m1()方法,设置窗口。 //定义一个初始化的游戏窗口方法 public static void m1() {//获取底层窗口界面的工具类JFrame jf new JFrame();//创建…

The module to import is incompatible with the current project【鸿蒙开发-BUG已解决】

文章目录 项目场景:问题描述原因分析:解决方案:心得体会:知识点OpenHarmony:HarmonyOS:项目场景: 报错: The module to import is incompatible with the current project 问题描述 希望通过 import module 将该模块引入到我的项目。 导入后出现错误,因为项目和模块…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 1 节 - 模块 1 简介

CSDN 官方中文视频(免费):点击进入 一、亚马逊云科技简介 第 1 节 - 模块 1 简介 1、讲师:李锦鸿 部门:亚马逊云科技培训与认证部门 方向:从事数据中心及云计算相关产品与解决方案工作 课程&#xff…

Java 设计模式之命令模式

命令模式 介绍 命令模式是一种行为类设计模式,核心是将每种请求或操作封装为一个独立的对象,从而可以集中管理这些请求或操作,比如将请求队列化依次执行、或者对操作进行记录和撤销。 命令模式通过将请求的发送者(客户端&#x…

【批量修改文件名,并去掉括号】

操作 一、 批量修改文件名操作二、去除括号 一、 批量修改文件名操作 在浏览器等下载很多图片后,命名顺序乱七八糟,想要将图片进行重新命名,从数字1开始 首先,全选文件夹中的图片 右键,重明明,选择一张图…

计算机图形学-变换基础

坐标系转换历程模型坐标系 -> 世界坐标系 -> 摄像机坐标系 -> 视口(屏幕)坐标系 变换 仿射变换和线性变换线性:旋转 缩放 镜像 切变放射: 平移 平移 2D变换矩阵 3D变换矩阵 旋转 2D旋转矩阵 //2D 旋转private (float,…

sql语句在字段中使用select

有两个表如下;产品表,产品评论表; 查询全部产品信息和每种产品的评论数量; 这也是子查询的一种; select * from product1; select * from comment; SELECT product1.*,(select count(id) from comment where product1…

【docker系列】docker命令篇

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…