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

简介: 【UCIe】UCIe 物理层介绍(逻辑物理篇)

1. 物理层概览


【UCIe】UCIe 物理层介绍(概览) 【ONGOING】





2. 逻辑物理层


  UCIe 逻辑物理层主要负责数字部分,其主要承担 Mainband 数据链路建立之前的 链路状态协商、物理链路降宽/调序/修复工作及链路训练成功后 Flit 到各条 Lane 的数据分配、时钟校正及低功耗状态管理 方面的工作。




2.1 链路状态管理

2.1.1 链路初始化与训练


 链路初始化及链路训练自不必多说,这个是所有带 PHY 的高速接口都会涉及到的部分,UCIe 也不例外。在 UCIe Mainband 发送数据之前,其需要先进行链路初始化及链路训练,通过 UCIe 链路两侧的 UCIe Die 互相协商,使 UCIe Module 工作在一个较为稳定的状态。


这里的链路初始化包括 Sideband 初始化、Mainband 初始化及链路初始化,链路训练则是针对 Mainband 而言的。对于有多个 UCIe Module 的 UCIe 而言,其各个 Module 之间独立进行初始化及训练。



2.1.1.1Sideband 初始化


 Sideband 初始化是退出 RESET 后的第一个状态,在此期间彼此探测对方的 Sideband 信号、进行 Sideband 坏 Lane 修复。双方在 Data Lane 上收发特定的 Clock Pattern 来唤醒彼此,并进一步交换 {SBINIT} 相关 Message 完成 Sideband 初始化。


2.1.1.2 Mainband 初始化


 Sideband 初始化完成之后紧接着进行 Mainband 初始化。Mainband 初始化期间通过 Sideband 交换各自的参数来协商 PHY 的参数,比如支持的最高速率、电压摆幅、时钟模式、时钟相位、Module ID 等等。Lane 序调整、坏 Lane 替换也是在该过程中进行的。


 跟 PCIe 类似,UCIe Mainband 初次初始化也是以最低速(4GT/s)为目标进行的。



2.1.1.3 Mainband 训练


 上文提到,Mainband 初始化后 Mainband 工作在了 4GT/s,类似于 PCIe 已经达到了 Gen1 速率。为了达到链路支持的最高速率,UCIe 在 Mainband 训练状态进行更精细化的时钟校正,使得链路工作在最高速率下。





2.1.1.4 链路初始化


 链路初始化是 RDI Active 前的最后一个状态。在此期间,UCIe Adapter 及 Physical Layer 之间进行握手,两端 的 Physical Layer 交换 Sideband Message,使 RDI 进入 Active 状态,完成 RDI Bring Up。




2.1.2 功耗状态管理


2.1.2.1 低功耗状态管理

 UCIe 逻辑物理层是 UCIe 功耗状态管理上的重要一环。逻辑物理层接收 RDI 接口上 D2D Adapter 发来的 lp_state_req=L1/L2 的请求,然后通过 Sideband Message 与对方握手进入 Low Power 低功耗状态。同理,逻辑物理层从 RDI 接口接收 Adapter 发来的 lp_state=Active 的请求,通过 Sideband 与对方握手之后 RDI 进入 Active 状态。


在退出低功耗状态之前,RDI 接口上除了 lp_state_req/pl_state_sts 这对 RDI LSM 状态的请求及报告,还伴随 pl_clk_req/lp_clk_ack 或 lp_wake_req/pl_wake_ack 这对握手信号,用以唤醒 RDI 接口另一侧组件的 Clock。


2.1.2.2 动态时钟管理


 除了以上状态机层面的功耗管理,逻辑物理层还提供了另一种 动态关闭前向时钟的方式来降低功耗:若 Valid 信号连续 16UI(8 Cycle)拉低,则关闭其 Clock(图 1)。当然也可以配置 UCIe 为 Free Running Mode,这样 Clock 就不会被关闭了。


8821d92d31e04bf8b7f3a985ab05500e.png


▲图 1:UCIe Dynamic Clock Gating

2.2 数据传输


2.2.1 Mainband 数据映射与传输


逻辑物理层负责 Mainband 上的数据收发工作。Flit Data 发送时,逻辑物理层从 RDI 接口接收 Flit Data,根据物理层条件将 Flit Data 按 Byte 粒度映射到不同的 Lane 上。Flit Data 接收时,逻辑物理层整合电气物理层各条 Lane 接收到的数据,封装成 Flit Data 经 RDI 接口传递给 Adapter。以工作在 Standard 256B Flit Mode 下的 UCIe X16 Standard Package 为例,256B 数据与 16 条 Lane 的映射关系如图 2 所示,从 B0~B255 依次循环映射到 Lane0~15 。


4a5cc9468fbf4e8db5876032b63feeee.png

Flit Byte 在 Lane 上传输时,从 Bit0 到 Bit7 以 DDR 双倍数据速率依次传输或接收。即每个发送时钟周期发送 2bit 数据(上升沿发送 1bit,下下降沿发送 1bit),每发送 1bit 为 1 UI,共占用 8 UI。8 UI 中的前 4 UI,Vliad 为高,后 4 UI Valid 拉低,如图 3 所示。这里的 Valid 信号为什么要这么搞呢?这是为 Raw Mode 或支持多种 Flit Mode 的 UCIe 模块特意设计的。这种 Valid 拉高->拉低的形式,可以将多个分属于不同 Mode 的相邻 Byte 分离开来。


61d37d7c65e946ec90c19156166c6abe.png



▲图 3:Flit Byte 传输

2.2.2 Sideband 数据封装与传输


为了简化数据链路的建立、提升 Mainband 的带宽利用率、简化 Mainband 设计复杂度,UCIe 提供了一种 Sideband 的方式作为 Back Channel 来处理一些 链路管理、参数交换、寄存器访问 等非业务相关事宜。UCIe 逻辑物理层负责 Sideband Packet 的封装/解析与传输。


 Sideband Packet 源头大致可分为两类:


   一种 来源于 Adapter 或 Protocol Layer,逻辑物理层充当中间人的角色。比如 CfgWr/CfgRd 及 MemWr/MemRd 类型的寄存器访问请求及其对应的 Completion,比如参数交换或 Vendor 自定义的 Message。


   还有一种 来源于逻辑物理层自身,逻辑物理层为 Sideband 请求或响应的动作发起者或接收者。比如链路初始化、链路训练、链路低功耗状态管理类的 Message,这些 Message 是物理逻辑层根据自身状态或接收到的 D2D Adapter/Electrical Physical Layer握手信号,在自身内部生成的,而非直接或间接来自于 Local 或 Remote 的 Adapter。


 RDI 接口上有一组跟 Sideband 相关的信号(pl_cfg* 与 lp_cfg*),逻辑物理层从 RDI 接口接收到 Sideband 相关信息后,封装成帧转换为串行数据流通过 PHY 传输到对端。同理,对端 PHY 发来的串行 Sideband 数据在逻辑物理层解包,通过 RDI 口上的 Sideband 信号发送到 Adapter。


 每一笔 Sideband Message 都由 64bit Header + 32 或 64bit Data 组成,若 Data 为 32bit,需要高位补 0 到 64bit。发送串行数据时,每 64bit 为 1 个 Packet,相邻 Packet 之间插入 32bit 0 以分隔不同的 Packet。每个 Clock Cycle 发送 1bit Sideband 数据,下降沿采样。如图 4 所示。


6d6ceab773704fab8a02f6cbc37d1256.png


▲图 4:UCIe Sideband Message 格式及其背靠背传输




2.3 链路鲁棒性


2.3.1 链路训练及测试


链路训练的测试期间,逻辑物理层负责生成 Scrambling 及 Training Pattern,并负责检测接收到的 Pattern。


 链路训练期间,发送端生成并发送测试 Pattern,接收端接收到测试 Pattern 后与其本地参考 Pattern 进行比较,两者若出现不同,则比较失败,表明链路存在问题。为保证准确发现链路问题,链路收发端采用相同的 LFSR,收发端同步启动 Pattern Generator 并同步推进,每个 UI 都要进行比较。UCIe 链路训练及测试电路示意图如下。


d1dc0eaeaa08486d9aa2ad262e901e2b.png


▲图 5:UCIe 链路训练及测试电路示意图

2.3.2 Lane 序重排


UCIe Module 必须支持 Lane Reversal。Lane Reversal 是针对 Mainband Data Lane 而言的,Data Lane 及对对应的 Redundant Lane 必须支持 Reversal,Track、Valid、Clock 及 Sideband 不支持 Lane Reversal。


 若链路初始化期间发现 UCIe 链路两端的 Lane 序不匹配,比如 Module 0 的 Lane 0~(N-1) 接到了 Module 1 的 Lane (N-1)~0 上,此时就需要做 Lane Reverse。考虑到两侧只需要有一侧进行 Reverse,UCIe 协议规定 只能在 Tx 端实现 Lane Reversal。


 UCIe Module 是如何判断是否需要进行 Lane Reverse 的呢?某个 Module 内的 Logical Data Lane 及 Redundant Lane 在该 Module 内有一个唯一的 8bit 宽的 Lane ID,TD_L[N] 与 RD_L[N] 共用一个 Lane ID。 正常情况下 Logical Lane 及 Physical Lane 的 ID 是相同的,在需要逆序或 Lane Repair 的时候,对映射关系进行调整。



2.3.3 坏 Lane 替换


 高等封装的 UCIe Module 具备一些 Redundant Lane,在常规 Lane 出现问题时,可以启用 Redundant Lane 对坏 Lane 进行替换,即 Redundancy Remapping。支持 Redundant Lane Remapping 的 Lane 类型有 Data、Clock、Track 及 Valid Lane。其中,一组 Data Lane 配有两根 Redundant Lane, Clock 与 Track 共用 Redundant Lane,Valid Lane 专用一根 Redundant Lane。


无论是 Lane Reversal 还是 Lane Remapping,其 本质都是从 Logical Lane 到 Physical Lane 的重映射。



2.3.4 链路减宽


 如上文所述,UCIe Advanced Package 才支持 Lane Repair,且能够修复的坏 Lane 数目有限。那么,坏 Lane 太多不够 Remap 了咋办? 标准封装出现了坏 Lane 咋办?有一个办法:链路减宽。对于标准 X16 封装,当出现坏 Lane 时,可以将 X16 减宽为 X8(Lane0~7 或 Lane 8~15)。协议中并未表明可以减宽为 X4、X2、X1。



3. 电气物理层


【UCIe】UCIe 物理层介绍(电气物理篇)



4. 参考


   UCIe Spec r1.0, Chapter 4


   深度解读 Chiplet 互连标准 “UCIe”


   谈谈 UCIe 的 Sideband


   UCIe 协议详解 (Sideband)  



目录
相关文章
|
5月前
|
存储
【基础计算机网络2】物理层——物理层设备
【基础计算机网络2】物理层——物理层设备
|
6月前
|
C语言 数据安全/隐私保护
计算机网络:物理层(码分复用计算)
计算机网络:物理层(码分复用计算)
106 0
详解CAN总线:标准数据帧和扩展数据帧
CAN协议可以接收和发送11位标准数据帧和29位扩展数据帧,CAN标准数据帧和扩展数据帧只是帧ID长度不同,以便可以扩展更多CAN节点。
|
DataX 图形学
【UCIe】UCIe 物理层介绍(电气物理篇)
【UCIe】UCIe 物理层介绍(电气物理篇)
1646 0
【UCIe】UCIe 物理层介绍(电气物理篇)
|
数据格式 流计算
【UCIe】UCIe 协议层介绍
【UCIe】UCIe 协议层介绍
1293 0
【UCIe】UCIe 协议层介绍
|
芯片 流计算 内存技术
【UCIe】初识 UCIe
【UCIe】初识 UCIe
2314 2
【UCIe】初识 UCIe
|
数据格式 流计算
【UCIe】UCIe 支持的协议及操作模式
【UCIe】UCIe 支持的协议及操作模式
2027 1
【UCIe】UCIe 支持的协议及操作模式
十一、物理层传输介质和设备
十一、物理层传输介质和设备
十一、物理层传输介质和设备
浅析PCIe链路LTSSM状态机
我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机。LTSSM全称是Link Training and Status State Machine。这个状态机在哪里呢?
|
流计算
【UCIe】UCIe 软件配置
【UCIe】UCIe 软件配置
955 0
【UCIe】UCIe 软件配置