以下转载自【毅力挑战】PCIe 每日一问一答(2022.03 归档)-阿里云开发者社区

一位有毅力的大神

2022.03.01 - PCIe Retimer 是什么?

随着 PCIe 的迭代,传输速率越来越高,高速信号传输中的信号衰减问题越来越大。目前解决信号衰减的三大方案:① 高速 PCB 板材;② Retimer;③ Redriver。Retimer 是三者中性价比最高的一种方案,也更为主流。2021年是 Retimer 发展元年。

Retimer 通过 其 Rx 端 CTLE/DFE (连续时间线性均衡/判断反馈均衡) 、CDR (时钟数据恢复) 及 Tx 端 EQ (均衡),来够补偿信道损耗,消除信号抖动,提升信号完整性,从而增加传输距离。

Redriver 是放大信号,Retimer 是重新生成信号。Retimer 比 Redriver 性能更高,但时延也更大。

友情链接:

PCIe Base Spec R6.0, Chapter 4.3

均衡器EQ和它在高速外部总线中的应用

ReTimer和ReDriver简介

PCIe Retimer是个什么样的市场?

2022.03.02 - PCIe Lane-Lane Skew 产生的原因 及 De-skew 方法?

同一 Link 多条 Lane 之间难免存在 Skew,即便 Tx 端采用同一 Clock 同时发送,不同 Lane 上到达 Rx 时间也难以相同。PCIe Lane-Lane Skew 一般源于以下几点:

电气 Driver 及 Receiver 之间存在差异。

印刷线路板阻抗变化。

不同 Lane 的走线长度存在差异。

Gen1/Gen2 时常用检测 OS 序列中的 COM 符号来实现多 Lane 的 De-skew;Gen3及以上常采用检测 SDSOS、EIEOS、SKP等方式来实现 De-skew,具体情况需具体分析。

2022.03.03 - Link Error 包括哪几种?发生 Link Error 时是如何恢复的?

Link Error,链路错误,是指连接两个 PCIe 设备的物理链路出现错误,通常在物理层检测出并传达到数据链路层。Link Error 包括以下几种:8b/10b 解码错误、framing 出错、符号/Block 锁定后失锁、弹性缓存上下溢出及 Lane 间消抖失败。

如果是在链路 Training 期间发生链路错误(非 Detect、Disable状态),无需特殊操作,LTSSM 正常运转,各个状态的 Timeout 机制保证 LTSSM 回转到 Detect 状态进行 Retraining。

如果是在 L0 状态发生链路错误(frame error等),可以由软件控制 LTSSM 由 L0 -> Recovery 进行链路恢复,或者重新训练。需要注意的是,出现链路错误后,下游设备是无法通过错误链路告知上游设备的,需要由错误链路上游的交换开关 USP 或 RC 上报错误,开启 Retraining。软件通过查验相关寄存器确认是否训练成功。

2022.03.04 - Alternate Protocol Negotiation 是什么 ? 跟Modified TS的关系?

为了扩展 PCIe 设备的适用范围,PCIe 5.0 开始支持 Alternate Protocol。Alternate Protocol 是指运行在 PCIe PHY 上的非标准 PCIe 协议,目前有 CXL 协议。

CXL 运行在 PCIe 5.0 PHY 上,支持 CXL 协议的设备也支持 PCIe 协议。那么到底采用 CXL 还是 PCIe 协议,收发端在进行链路训练的时候可以进行协商,即 Alternate Protocol Negotiation。Alternate Protocol Negotiation 采用 Modified TS1/2,跟 Cfg.Lanenum.Wait、Cfg.Lanenum.Accept、Cfg.Comple 并行,bypass EQ。可参考 2022.02.21 Modified TS 相关介绍。

勘误:

2022.02.21 ,alternate protocol 协商与 lane number 协商并行。

2022.02.15,添加参考文献

2022.03.05 - PCIe Switch 有哪几种传输模式?

PCIe Switch 传输 TLP 有两种模式:① Store & Forward;② Cut-through。

Store & Forward,接收报文并进行校验,如有错误走 NAK DLLP 请求重传,否则推送到 Egress Port。这种模式保证送到 Switch 出口的报文是正确的,但也因此增加了延时。对于 Data Payload 比较大的 TLP,采用该模式时延很大。

Cut-through,直接了当,接收报文直接推给 Egress Port,没收完也推,延时低但不保证报文正确。当接收完报文进行校验,发现报文错了,发送 NAK DLLP 给 Requester 请求重传,然后给 Completer 发送 EDB(End Bad)让 Completer 无视该报文(如下图)。当链路质量不好时,频繁出现校验失败,采用该模式很浪费带宽。

▲ 图1 Switch Cut‐Through Mode Showing Error Handling

参考:

PCI Express Technology, Mindshare.inc, chapter 10

STORE & FORWARD AND CUT-THROUGH

2022.03.06 - Poisoned TLP 是什么?是干啥的?

Data Poisoning 或称 Error Forward,是一种事务层报告错误的方法,报告错误时发送的 TLP 为 Poisoned TLP。Poisoned TLP,有毒的 TLP,仅用于含有 Data 的 Request 或 Completion,比如 写请求、MsgD、读完成、Atomic 请求及完成。

Poisoned TLP 通过 TLP Header 中的 EP 位来指示,EP=1 时,即表示当前 TLP 数据被破坏了。注意,是 TLP Data 被破坏了,不是Header,Header 出错可不归他管,Header 出错那就是另外的故事了。Posioned TLP 用于控制 Error 在整个系统内的传播,协助软件诊断该 TLP 路由路径上的 Switch 是否给该 TLP 贴上了有毒标签。

在生成这个 TLP 的时候就知道这是个 Data 错误的 TLP。既然知道 Data 出错,为什么还要继续发?—— 以读请求为例,Requester 发出读请求后,在等待 Completion,现在数据读回传了,但是 Switch 在半路就检测到 Data 出错了,你这 Completion 还要不要继续发?不发的话,Requester 还在等,直到 Timeout。倒不如给个错误信号,至少不会让 Requester 久等。Requester 收到 Poisoned TLP,知道发生了事务层错误,至于这数据要不要用,都不违法。

友情链接

PCIe扫盲——PCIe错误源详解(一)

2022.03.07 - TLP Digest 是什么?

Digest,又名 ECRC。

TLP 包格式:Prefix + Header + Data Payload + Digest。TLP Digest 便是这 TLP 包的组成部分,位于 TLP 末尾,长度 1DW,存放了该 TLP 的 ECRC 值。

TLP 四大组成中,除了 Header,其他都是可选项,包括 Digest。TLP Header 中有一个字段 TD (TLP Digest),用以标记该 TLP 是否使用 Digest,或者说该 TLP 是否使用 ECRC。如果 Header 显示该 TLP 不含 Digest,但最后收到了 Digest,这个 TLP 就是个畸形包,要上报错误。

▲ 图1 TLP 包格式

2022.03.08 - Native EP 和 Legacy EP 是啥?

EP 分两种:Legacy EP 及 Native EP。Leagcy EP 是指原本给 PCI-X 总线接口设计的 EP 被改为 PCIe 总线接口 EP。Native EP 是指标准的 PCIe EP。Legacy EP 支持部分 Native EP 禁止的操作,Native EP 全部通过内存映射来操作。两者比较如 表1 所示。

▼ 表1 Legacy EP Vs. Native EP

2022.03.09 - PCIe LCRC 和 ECRC 有何区别?

  PCIe 采用 CRC 校验来检测 TLP 是否存在错误,根据检测层次不同可分为 LCRC 及 ECRC。

  两者存在以下区别:

▼ 表1 LCRC Vs. ECRC

参考:

PCIe扫盲——PCIe错误检测机制

ECRC VS LCRC

2022.03.10 - PCIe Sequence Number 是什么?有什么用处?

DL 层在发生 TLP 前会给每一个 TLP 添加一个序列号,即 Sequence Number。

接收端 DL 层在检查完 LCRC 后对 Sequence Number 进行检查,判断接收到的序列号是否与期望值一致,以此判断是否有丢包。出现丢包的话,依据 Sequence Number 发送 NAK 请求重传丢掉的包。短时间内收到 Sequence Number 相同的重复包不视为错误处理。

2022.03.11 - Message 是如何路由的?

Message 路由方式有三种,以隐式路由为主,但也支持基于地址或 ID 的路由。TLP Header 中 Type 字段(10r2r1r0)指定了该 Message 的路由方式,如表1。

▼ 表1 Message 路由

对于与 RC 之间通信的 Message,RC 为 Message 的发起者或接收者,没必要指定地址和ID,采用隐式路由。目前除了 Vendor Define 的 Message,还没有基于地址进行路由的 Message 类型。

参考

PCI Express Base Spec 5.0, Chapter 2.

老男孩读PCIe之七:TLP的路由

PCIe系列第四讲、TLP的路由方式

2022.03.12 - 收到不支持的 Message 是如何处理的?

回复 UR。不支持的 Message 是指 Message Code 未识别。

2022.03.13 - LTSSM EQ phase0~phase3 都在干啥?

PCIe LTSSM 链路均衡,即 EQ (equalization),是 LTSSM Recovery 的一个子状态。PCIe 在首次进入 8 GT/s及以上速率时要进行 EQ,调整收发端电气参数以改善信号质量,满足高速信号传输的信号质量需求。

EQ 有 phase0 ~ phase3 四个阶段。TS1 或 TS2 symbol 6 中包含 EC 字段来指示当前处于 EQ 的哪个 phase。各 Phase 工作内容如下:

EQ Phase0:EC=0。USP 回传 preset 及 coefficients 给 DSP。DSP 没有 Phase0。

EQ Phase1:EC=1。DSP 及 USP 发送其 LF (Low Frequency,symbol7)、FS (Full Swing,symbol8) 、Post-cursor (symbol9) 给对端 ,在 phase2/3 使用。

EQ Phase2:EC=2。USP 作为 Master,调节 DSP 的 Tx 系数。具体可分为 preset 调节及 coefficient 调节。

EQ Phase3:EC=3。DSP 作为 Master,调节 USP 的 Tx 系数。同 phase2。

以上四个 phase 中,phase0/1 采用 preset 粗调,phase2/3 精调。如果粗调阶段就达到了信号质量需求,也可以不进行精调。

除非有特别配置,8 GT/s 以上速率时必须进行 EQ,至少在最高速率上要进行 EQ,中间速率可以跳过 EQ。当然仿真的时候可以设置 bypass_eq,或者设置 bypass_eq_to_highest_rate,仅在最高速率时进行 EQ。比如最高支持 32 GT/s,那么在 8 GT/s,16 GT/s 的时候可以跳过 EQ。从 32GT/s 降速时,需要重新进行 training 并EQ。

参考

PCI Express Base Spec 5.0,Chapter 4.2.3

PCI Express学习篇—物理层LTSSM(三) Recovery.Equalization详解

2022.03.14 - PCIe 地址空间有哪几种访问模式?DBI、ELBI、LBC、CDM 是啥?

PCIe 寄存器访问支持 Wire Access 和 DBI Access 两种模式。Wire Access 是对端 PCIe 访问本地寄存器(CDM 内部寄存器或 ELBI 外部应用寄存器)。DBI Access 是本地 CPU 等 Master 访问本地寄存器。几个概念介绍如下:

DBI,Data Bus Interface,EP 侧的 CPU 可以通过 DBI 接口 PCIe Controller 的 CDM 内部寄存器,也可以访问 ELBI 外部应用寄存器。

ELBI,External Local Bus Interface,把 PCIe Controller 收到的 Inbound 寄存器读写请求转发到外部应用寄存器。

CDM,Configuration-Dependent Module,含标准的 PCIe 配置空间及 PCIe Controller 指定的寄存器空间(端口逻辑寄存器)。

LBC,Local Bus Controller,EP 的 LBC module 给对端 USP 或本地 CPU 提供一种通过 DBI 访问 CDM 内部寄存器及 ELBI 外部应用寄存器的机制。

参考

DWC_pcie_ctl_ep_databook, Chapter 3.5

PCIE协议解析 synopsys IP DBI and LBC 读书笔记

2022.03.15 - PCIe 热切换和热插拔是什么?

PCIe 热切换和热插拔是一种在不关闭系统电源情况下更换 PCIe 卡设备的技术,能够确保换卡的同时 PCIe 系统持续不间断的运行。热插拔适用于 PC 及服务器主板上的 PCIe 板卡链接,热切换适用于 Compact PCI。

PCIe 卡有两个为热插拔而设计的引脚——PRSNT#1 和 PRSNT#2,这两个引脚位于金手指两侧,比其他引脚要短。当 PCIe 板卡被拔出时,这两个引脚能够先于其他引脚检测到板卡正在被拔出。在这两个引脚检测到 PCIe 卡拔出、其他引脚断开连接之前这段时间内,系统软件协同主板热插拔驱动器、PCIe 卡设备驱动以及 PCIe 卡硬件进行热插拔处理,有序切断电源。

参考

PCI Express Base Spec 5.0, Chapter 6.7

PCI、PCI-X 和 PCI Express的原理及体系结构,马鸣锦

PCIe扫盲——热插拔简要介绍

2022.03.16 - MSI 和 MSI-X 是什么?

MSI 和 MSI-X 都是消息信号中断。它们虽然叫 Message Signaled Interrupt,但它们不是 Message,而是带有 1DW 数据载荷的一笔存储器写事务。

MSI 能力结构中定义了消息地址(即接收中断的存储器地址,32bit 或 64bit)、消息数据等,不同的消息数据代表不同的中断。MSI 最多支持 32 个中断,这 32 个中断对应唯一的地址。

随着系统的发展,单一消息地址及最高 32 个中断的现状无法满足需求。MSI-X 对 MSI 做了扩展,最多支持 2048 个中断,且每个中断可以对应不同的地址。为了实现以上功能,MSI-X 能力结构中不再指定单一的消息地址,而是替换为 MSI-X 表地址,这个表中每一个 Entry 对应控制一条中断。

友情链接

PCIe扫盲——中断机制介绍(MSI)

PCIe扫盲——中断机制介绍(MSI-X)

2022.03.17 - PCIe 采用了哪些主要的信号补偿技术?

信号补偿三大技术:发送端预加重(Pre-emphasis)、去加重(De-emphasis)和接收端均衡(Equalization)。预加重、去加重也被称为发送端均衡。各技术基本原理如图 1 所示。

▲ 图1 预加重、去加重、接收端均衡原理

无源传输线路像是一个低通滤波器,PCIe 高速串行信号经信道从发送端传输到接收端后,其高频分量比低频分量衰减要大,而高频分量主要集中在信号的上升沿及下降沿。为了补偿这种高频衰减,在信号发送的时候,有意增强信号跳变沿的信号幅度,增高高频分量,即信号预加重;相比于预加重的方案,去加重则是降低跳变沿之外的信号幅度,削弱低频分量,同样能够达到目的。

接收端均衡器相当于高通滤波器,来补偿失真的波形。

友情链接

信号完整性测试两大法宝–加重与均衡

PCIe扫盲——物理层电气部分基础(二)之De-emphasis

2022.03.18 - Polling.Active 中两端的 1024 个 TS 有什么发送顺序吗?

没有顺序要求。

假设 Compliance Bit = 0,LinkNum = PAD,LaneNum = PAD 。

Detect 完成之后 Tx/Rx 进入 Polling.Active 状态,任一端确保其 Tx 部分稳定后即可发送 TS1,没有先后顺序要求,具体取决于退出 Detect 的时刻。两端 Rx 依据其收到的 TS1 进行位锁定和符号锁定。任一端所有有效 Lane 上发送完 1024 TS1 且收到 8 TS1/TS2 后进入 Polling.Config,改发 TS2。

以相连的 A、B 两个 PCIe 设备为例,重点说下为什么收到 8 TS1 或 8 TS2 :A 发完 1024 TS1 收到 8 TS1 后进 Polling.Config,A 开始发 TS2;A 开始发 TS2 了,B 还处于 Polling.Active,这时候 B 有可能还没完成锁定,那么 B 一个 TS1 都收不到。等完成锁定,收到的已经是 A 发来的 TS2 了。所以收到 8 TS2 也可以进 Polling.Config

2022.03.19 - 本地 Rx 回环的时候恰好碰到对端 Tx 发送 TS1 怎么办,是有什么仲裁机制吗?

如果仅指单个 PCIe 设备 PHY 的 Loopack,其进入 Loopback 模式后,不再接收对端 Tx 发送的 TS1 (通过 Mux 实现)。

如果是两个 PCIe 设备间的 Loopback,两者进入 Loopback 是经过了协商的(Master 发 Loopback=1 的 TS1,Slave 回相同的 TS1),否则不会开始 BIST 测试。即不存在问题所述情况。

2022.03.20 - PCIe 有哪几种 loopback 模式?

PCIe 有三种 loopback 模式:

Local Digital Loopback (PIPE),单个 PCIe 仅需 Controller 即可完成,没有 PHY 的参与。

Local Analog Loopback,单个 PCIe 即可完成,需要 Controller,过了 PHY。

Remote Digital Loopback,需要 Master 和 Slave 两个 PCIe 完成,两端的 Controller 及 PHY 都需参与。

各种模式示意图如图 1 所示。

没有一种模式叫 Remote Analog Loopback,想想为啥

PCIe 每日一问一答相关推荐

  1. 【毅力挑战】PCIe 每日一问一答(2022.11 已归档)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  2. 【毅力挑战】PCIe 每日一问一答(2022.12 已归档)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  3. 【毅力挑战】PCIe 每日一问一答(2022.05 已归档)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  4. 【毅力挑战】PCIe 每日一问一答(2022.03 归档)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  5. 【毅力挑战】PCIe 每日一问一答(目录篇)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  6. 【毅力挑战】PCIe 每日一问一答(2022.04 归档)

    本文意在督促自己持续学习 PCIe.日更长文做不到,但三言两语总该能写出来.一天至少更新一个 PCIe 相关知识点,聚沙成塔.集腋成裘,相信几年下来总能覆盖绝大部分的 PCIe 知识面.本文注定越往后 ...

  7. 风控每日一问:信用评分如何应用在风控策略中(二)

    风控每日一问:信用评分如何应用在风控策略中(二) 上一期主要说了ABC三卡的功能和作用,并没有具体阐述信用评分的实际应用过程,这次就这个问题,进行了搜索并思考,归结如下: 风险策略是什么,风险策略是由 ...

  8. 每日一问 - 关于决策树算法

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 来源:Datawhale优秀回答者 将在留言区,Datawhale高校群 ...

  9. 《C++入门经典(第5版•修订版)》——2.6 问与答

    本节书摘来自异步社区出版社<C++入门经典(第5版•修订版)>一书中的第2章,第2.6节,作者:[美]Jesse Liberty , Rogers Cadenhead,更多章节内容可以访问 ...

最新文章

  1. AAuto如何设置combobox
  2. MirantisOpenStack-Fuel 9.0
  3. 描述一下Spring框架的作用和优点?
  4. patch是什么意思啊_学 Vue 看这个就够了 - 什么是 Vue.js
  5. Struts的基础案例的步骤
  6. 计算机组成原理模拟试题,计算机组成原理模拟试题及答案
  7. 【Vue】Vue入门 -(本地篇+网络篇)代码示例及运行效果
  8. 01-H5语义化标签
  9. ORACLE 添加和查看注释
  10. Magento怎么升级?
  11. 1177:奇数单增序列
  12. 大数据开发笔记(四):Hive数仓调优
  13. docker安装mysql并配置文件_Docker安装mysql,并自定义my.cnf
  14. python 框架是什么意思_Python框架有哪些?区别是什么?
  15. 《编程之美》---求二叉树中节点的最大距离
  16. **JAVA实习周记(第二周):喔**
  17. 微信公众服务号申请、认证(开通支付)-微信开发图文教程
  18. ERA5再分析资料下载
  19. RGB和YUV视频存储格式
  20. 数学问题-圆上某点沿圆心旋转后的坐标关系式

热门文章

  1. 详解数据存储 网络数据传输 大端模式和小端模式
  2. Unity Animator
  3. Web前端开发规范 : 文件命名规则
  4. Android冒险之旅-24-自定义View--涟漪+分裂+自定义点击行为
  5. 2021年华为杯数模赛D题总结
  6. 加速拥抱数字化,云时通打造全新数字中台!
  7. 简报 | 法国立法者支持将加密货币税率降低6%的修正案
  8. 手机有必要戴手机壳吗?
  9. (18)【WAF绕过】WAF部署、绕过分析和原理、注入绕过WAF方法
  10. 受周期性干扰信号影响的环路控制回路(压力控制)研究