【UCIe】UCIe PHY LSM 介绍2

简介: 【UCIe】UCIe PHY LSM 介绍

2.4.1 MBTRAIN.VALVREF


 MBTRAIN.VALVREF 时 Mainband 仍处于最低速,期间对 Valid Lane 的 接收端参考电压 进行训练,以实现对 Valid 信号的最佳采样。以 {MBTRAIN.VALVREF start req}/{MBTRAIN.VALVREF start resp} 这对握手信号启动训练,训练完毕后以 {MBTRAIN.VALVREF end req}/{MBTRAIN.VALVREF end resp} 这对握手信号退出该子状态。


 训练期间,Data Lane 保持在低电平状态,Valid Lane 上发送 128 次 VALTRAIN Pattern (4 UI High + 4 UI Low)。




2.4.2 MBTRAIN.DATAVREF


 MBTRAIN.DATAVREF 期间对 Data Lane 的 接收端参考电压 进行训练,以实现对 Data 信号的最佳采样。以 {MBTRAIN.DATAVREF start req}/{MBTRAIN.DATAVREF start resp} 这对握手信号启动训练,训练完毕后以 {MBTRAIN.DATAVREF end req}/{MBTRAIN.DATAVREF end resp} 这对握手信号退出该子状态。


 训练时采用 Rx Initiated Point Test 或 Rx Initiated Eye Width Sweep Test。训练期间,Data Lane 上发送 4K UI LFSR Pattern,若 Rx 接收到的 LFSR Error Bit 在阈值之内,则训练成功。




2.4.3 MBTRAIN.SPEEDIDLE


 MBTRAIN.SPEEDIDLE 是 UCIe 的一个电气闲状态,该状态时可以进行切速。


 该子状态有 4 个入口:MBTRAIN.DATAVREF,MBTRAIN.LINKSPEED,PHYRETRAIN 及 L1。如果从 DATAVREF 进来,表明这是此次链路训练第一次进该状态,则调整传输速率到 UCIe 链路两端设备协商好的最高速率。如果从 MBTRAIN.LINKSPEED 或 PHYRETRAIN 状态进来,表明最高速没有训练成功,或最高速时链路遇到了问题,则在最高速率基础上降低一档速率再次进行训练。如果从 L1 低功耗状态进入,文档没写以何种速率进行训练,笔者认为是按照上一次的速率进行训练。


 切速完成之后,通过 {MBTRAIN.SPEEDIDLE done req} 及 {MBTRAIN.SPEEDIDLE done resp} 握手退出到 MBTRAIN.TXSELFCAL 状态。



2.4.4 MBTRAIN.TXSELFCAL


 MBTRAIN.TXSELFCAL 期间,Tx 保持电器闲,Tx 独立进行电气参数的调整。调整完毕后,通过 {MBTRAIN.TXSELFCAL Done req} 及 {MBTRAIN.TXSELFCAL Done resp} 握手后进入 MBTRAIN.RXCLKCAL 状态。


 注意,没有 {MBTRAIN.TXSELFCAL start req/resp} 握手信号。




2.4.5 MBTRAIN.RXCLKCAL


 MBTRAIN.RXCLKCAL 期间对 Rx Clock 电气参数进行调整。{MBTRAIN.RXCLKCAL start req} 及 {MBTRAIN.RXCLKCAL start resp} 握手完成后开始调整,调整期间 Clock 保持 Free Run,Data 及 Valid 保持在低电平,Tx 端不能改动任何 Clock 电气参数或 PI Phase。


 完成 {MBTRAIN.RXCLKCAL done req} 及 {MBTRAIN.RXCLKCAL done resp} 握手后退出到 MBTRAIN.VALTRAINCENTER 状态。




2.4.6 MBTRAIN.VALTRAINCENTER


 MBTRAIN.VALTRAINCENTER 期间 Tx Initiated Eye Width Sweep 或 Tx Initiated Point Test 相关操作,以保证 Clock 能够在 Valid 中心采样。测试 Pattern 仍然采样 VALTRAIN Pattern。


 训练前采用 {MBTRAIN.VALTRAINCENTER start req} 及 {MBTRAIN.VALTRAINCENTER start resp} 进行握手。训练完成后采用 {MBTRAIN.VALTRAINCENTER start req} 及 {MBTRAIN.VALTRAINCENTER start req} 进行握手,退出到 MBTRAIN.VALTRAINVREF 状态。


 文档里写,该状态的下一状态为 MBTRAIN.DATATRAINVREF,此处存疑。




2.4.7 MBTRAIN.VALTRAINVREF


 MBTRAIN.VALTRAINVREF 做的事跟 MBTRAIN.VALVREF 大差不差,区别在于本状态时的速率已经是切速之后的了,且测试是 Tx 始发的,必要时可以做 Tx Deskew。




2.4.8 MBTRAIN.DATATRAINCENTER1


 MBTRAIN.DATATRAINCENTER1 期间进行 D2C 训练。做的事跟 MBTRAIN.DATAVREF 大差不差,区别在于本状态时的速率已经是切速之后的了,且测试是 Tx 始发的,。


 文档里写,该状态的下一状态为 MBTRAIN.DESKEW,此处存疑。




2.4.9 MBTRAIN.DATATRAINVREF


 MBTRAIN.DATATRAINVREF 做的事跟 MBTRAIN.DATAVREF 大差不差,区别在于本状态时的速率已经是切速之后的了,且接收端参考电压的调整是可选的。




2.4.10 MBTRAIN.RXDESKEW


 MBTRAIN.RXDESKEW 状态下进行可选的 Rx Deskew 操作。测试操作选用 Rx Initiated Full Eyed Width Sweep 或 Rx Initiated Point Test。




2.4.11 MBTRAIN.DATATRAINCENTER2


 考虑到上一状态中可能存在的 Rx Deskew,MBTRAIN.DATATRAINCENTER2 状态下重新进行一次 MBTRAIN.DATATRAINCENTER 类似的操作,来决定眼图中心。该状态下,通过调整 Clock Phase 来找到眼睛睁的最大的位置作为最终的数据采样时刻。下一状态为 MBTRAIN.LINKSPEED。


 注意,本状态下不做 Tx Deskew。不然眼图中心白找了。



2.4.12 MBTRAIN.LINKSPEED


 MBTRAIN.LINKSPEED 是成功完成 Mainband 训练的最后一个子状态,该状态下检测链路的稳定性。如果检测通过,则退出到 LINKINIT 状态。一旦发现 Mainband 链路稳定性存在问题,根据检测结果决定进行降速还是 Lane Repair,分别对应 MBTRAIN.SPEEDIDLE 及 MBTRAIN.REPAIR 状态。




2.4.13 MBTRAIN.REPAIR


 MBTRAIN.REPAIR 有两个入口,MBTRAIN.LINKSPEED 及 PHYRETRAIN,无论那个入口,进到这个状态都是要进行坏 Lane 修复或减宽。


2.5 LINKINIT


 LINKINIT 是 LSM 进入 ACTIVE 之前的最后一个状态,用以 D2D Adapter 完成初始链路管理。该状态时,进行 RDI Bring Up。RDI Bring Up 成功之后,UCIe Link Control Register 中的 Start UCIe Link Training 字段清零,LFSR 复位。



2.6 ACTIVE


 PHY LSM 进入 ACTIVE 状态,表示物理层已经完成了初始化,RDI 已经 Active,上层可以在 UCIe Link 上交换数据了。此时传输的数据是经过 LFSR 加扰的。


 RDI 状态机到达 Active 状态后,就完成了链路初始化的 Stage2。Stage3 对应 FDI Bring Up,协议里没有明确提到 FDI Bring Up 发生在 PHY LSM 的哪个状态,但可以肯定的是 FDI Bring Up 发生于 RDI Bring Up 之后、Mainband 业务传输之前。Stage3 时,Adapter 内的 FDI 状态走到 Active。




2.7 L1/L2


 L1 及 L2 是 UCIe 的低功耗状态,其比 ACTIVE 状态下的 Dynamic Clock Gating 功耗更低。本端 Adapter 及对端均可以请求退出低功耗状态。L1 退出后是 MBTRAIN.SPEEDIDLE,L2 则是直接退出到 RESET 状态。




2.8 PHYRETRAIN


 Local Die 的 Adapter、PHY 及 Remote Die 都可以触发 PHY 进入 Retrain。 进入 PHYRETRAIN 状态后,变量 PHY_IN_RETRAIN 置一。




2.8.1 Local Adapter 发起 Retrain


 Adapter 触发 PHY 进入 RETRAIN 状态的过程如下:


   Adapter 直接通过 RDI 的 lp_state_req=Retrain 请求 PHY 进入 RETRAIN 状态。


   PHY 收到 lp_state_req=Retrain 后,在 RDI 接口上通过 pl_stallreq/lp_stallack 完成 Stall 的Req/Ack 握手。


   PHY 发生 Sideband Message {PHYRETRAIN.retrain init req} 到对端。


   对端完成 Stall 握手且 RDI 进入 Retrain 状态后,反馈 Sideband Message {PHYRETRAIN.retrain init resp}。


   本端收到 {PHYRETRAIN.retrain init resp} 后,本端 RDI 进入 Retrain 状态。


   本端发送 {PHYRETRAIN.retrain start req} 到对端,依据 Runtime Link Test Control 寄存器填充 Msg 中的 Retrain Encoding 字段(没有 Lane Error、有 Lane Error 但可修复、有 Lane Error 且不可修复),便于对端知晓此次 Retrain 的意图。


   对端收到 {PHYRETRAIN.retrain start req} 后,跟其自身的 Retrain Encoding 比一下,不冲突的话则直接采用相同的 Retrain Encoding 反馈 {PHYRETRAIN.retrain start resp},有冲突的话,做下处理再反馈。


   收到 {PHYRETRAIN.retrain start resp} 后,PHY 根据协商好的 Retrain Encoding 进行相应的 MBTRAIN 子状态(MBTRAIN.TXSELFCAL、MBTRAIN.REPAIR、MBTRAIN.SPEEDIDLE)。


 优先级:No Lane Error < Repair < Speed Degrade。


 为什么 Speed Degrade 比 Repair 的优先级还高? 没有修复的可能了才会 Speed Degrade,当然 Speed Degrade 的优先级更高。



2.8.2 Local PHY 发起 Retrain


 PHY 触发 Retrain 有两种方式:


   PHY 检测到对端发来的 Mainband 数据存在 Frame Error 时,通过 RDI pl_error 告知 Adapter,并主动请求进入 Retrain。进入 Retrain 的步骤跟 Adapter 触发类似,只是没有 lp_state_req=Retrain 的操作。


   MBTRAIN.LINKSPEED 期间检测到 Runtime Link Testing Control 寄存器(Runtime Link Test Control, p209)发生变化,PHY 发送 {PHYRETRAIN.retrain start req} 给对端,触发 Retrain。




2.8.3 Remote Die 发起 Retrain


 收到 Remote Die 发来的 {PHYRETRAIN.retrain init req} 后,本端开始 Retrain。进入 Retrain 的步骤已经包含在 Adapter 或 PHY 触发 Retrain 的过程中了,不再赘述。



2.9 TRAINERROR


 UCIe 初始化期间发生错误或者需要 LSM 回退到的 RESET 时,LSM 先进入 TRAINERROR 状态。


 若 Sideband 已经 Active 了(SBINIT 之后的状态),此时 UCIe 链路一端的 UCIe Module 需要进入 TRAINERROR,应跟链路对端进行握手,双双进入该状态。若 Sideband 还没 Active,则不必告诉对端,其自行进入 TRAINERROR 即可。对端长时间得不到相关响应也会自己进入 TRAINERROR 的。


 涉及到的 Sideband Message 握手信号:


   {TRAINERROR Entry Req}


   {TRAINERROR Entry Resp}


 如果 Req 发出后 8ms 未等到 Resp,则直接进入 TRAINERROR。


 文档没有给出具体的 TRAINERROR 退出到 RESET 的条件,只给了几种建议:RDI 没有处于 LinkError 则直接退出到 RESET,否则等待 RDI 退出 LinkError 后才能退出到 RESET 状态。


 退出到 RESET 前还用握手吗? 目前看是不需要的,文档没有提到,也没有找到相关 SB Msg。



3. 参考


   UCIe Spec r1.0, Chapter 4


   UCIe 物理层介绍(逻辑物理篇)  



相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
目录
相关文章
|
8月前
|
缓存 SoC
深入理解AMBA总线(八)AHB2APB同步桥设计
深入理解AMBA总线(八)AHB2APB同步桥设计
208 0
|
8月前
|
存储 网络性能优化 vr&ar
深入理解AMBA总线(十七)AXI是如何提高性能的
深入理解AMBA总线(十七)AXI是如何提高性能的
436 1
|
8月前
|
SoC 内存技术
深入理解AMBA总线(五)AHB-lite Transfer进阶
深入理解AMBA总线(五)AHB-lite Transfer进阶
192 0
|
8月前
|
安全 物联网 数据安全/隐私保护
深入理解AMBA总线协议(AXI总结篇)
深入理解AMBA总线协议(AXI总结篇)
679 0
|
8月前
|
SoC
深入理解AMBA总线(二)APB slave设计
深入理解AMBA总线(二)APB slave设计
214 0
|
8月前
|
异构计算 SoC
深入理解AMBA总线(三)APB interconnect的补充
深入理解AMBA总线(三)APB interconnect的补充
102 0
|
SoC
【UCIe】UCIe PHY LSM 介绍
【UCIe】UCIe PHY LSM 介绍
468 0
【UCIe】UCIe PHY LSM 介绍
【UCIe】UCIe Lane Reversal 介绍
【UCIe】UCIe Lane Reversal 介绍
258 0
【UCIe】UCIe Lane Reversal 介绍
|
芯片 流计算 内存技术
【UCIe】初识 UCIe
【UCIe】初识 UCIe
1374 1
【UCIe】初识 UCIe
|
数据格式 内存技术
【UCIe】UCIe Sideband 介绍
【UCIe】UCIe Sideband 介绍
654 0
【UCIe】UCIe Sideband 介绍

热门文章

最新文章