【PCIe 每日一问一答】

MangoPapa 社区服务员
2021年博客之星IC领域Top5
博客专家认证
2022-02-07 15:08:50

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

原帖见:【毅力挑战】PCIe 每日一问一答

...全文
1149 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
MangoPapa 社区服务员 2022-03-09
  • 打赏
  • 举报
回复

回帖停更,只更原文 👉 【毅力挑战】PCIe 每日一问一答

MangoPapa 社区服务员 2022-03-09
  • 打赏
  • 举报
回复

2022.03.09 - PCIe LCRC 和 ECRC 有何区别?


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

  两者存在以下区别:

▼ 表1 LCRC Vs. ECRC
LCRCECRC
错误层次数据链路层事务层
错误原因物理层信号质量不好Switch 转发时出错
是否可修正可修正不可修正
错误处理方法- 反馈 NAK 请求重传
- 无需软件参与
- 上报错误给系统
- 需要软件参与
Switch 处理方法重新计算 LCRCECRC 不做修改
是否可选必选可选

参考:

  1. PCIe扫盲——PCIe错误检测机制
  2. ECRC VS LCRC
MangoPapa 社区服务员 2022-03-09
  • 打赏
  • 举报
回复 1

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
Legacy EPNative EP
是否支持 IO 事务?支持不支持
是否支持锁定事务?● 支持(完成者)
● 不支持(请求者)
不支持
是否支持 64 位寻址?可以不支持 64 位寻址对于可预取的存储空间必须支持 64 位寻址,
不可预取的存储空间允许映射到低 4GB
支持的中断类型● 支持 INTx
● 必须支持 MSI
只支持 MSI
MangoPapa 社区服务员 2022-03-09
  • 打赏
  • 举报
回复

勘误 - 2022.03.08 表格错行,删除后更新

MangoPapa 社区服务员 2022-03-07
  • 打赏
  • 举报
回复

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 包格式
MangoPapa 社区服务员 2022-03-06
  • 打赏
  • 举报
回复

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,知道发生了事务层错误,至于这数据要不要用,都不违法。


友情链接

  1. PCIe扫盲——PCIe错误源详解(一)
MangoPapa 社区服务员 2022-03-05
  • 打赏
  • 举报
回复

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

参考:

  1. PCI Express Technology, Mindshare.inc, chapter 10
  2. STORE & FORWARD AND CUT-THROUGH
MangoPapa 社区服务员 2022-03-04
  • 打赏
  • 举报
回复

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,添加参考文献

MangoPapa 社区服务员 2022-03-03
  • 打赏
  • 举报
回复

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。软件通过查验相关寄存器确认是否训练成功。

MangoPapa 社区服务员 2022-03-02
  • 打赏
  • 举报
回复

勘误:
Fix typo, 2022.02.10 TImeout, Timeoit -> Timeout

MangoPapa 社区服务员 2022-03-02
  • 打赏
  • 举报
回复

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,具体情况需具体分析。

MangoPapa 社区服务员 2022-03-01
  • 打赏
  • 举报
回复

2022.03.01 - PCIe Retimer 是什么?


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

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

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

在这里插入图片描述


友情链接:

  1. PCIe Base Spec R6.0, Chapter 4.3
  2. 均衡器EQ和它在高速外部总线中的应用
  3. ReTimer和ReDriver简介
  4. PCIe Retimer是个什么样的市场?
MangoPapa 社区服务员 2022-02-28
  • 打赏
  • 举报
回复

2022.02.28 - PCIe Gen2 也需要从Gen1切速吗?能不能直接进Gen2?


需要。不能。

无论收发端支持的最高速率是多少,第一次 Traning 必须进 Gen1 L0,这是协议要求的。

即使是 Gen2 速率,第一次也要按照 Gen1 进行 Traning。到达 Gen1 L0后,由于还未达到最高速率,LTSSM 进入 Recovery, 状态跳转如下:

L0 (Gen1) -> Recovery.RcvrLock -> Recovery.RcvrCfg -> Recovery.Speed -> Recovery.RcvrLock -> Recovery.RcvrCfg -> Recovery.Idle -> L0 (Gen2)

MangoPapa 社区服务员 2022-02-28
  • 打赏
  • 举报
回复

2022.02.27 - M-PCIe 是什么?

M-PCIe 是面向移动设备等功耗敏感型设备 PCIe 协议,即 Mobile-PCIe。

M-PCIe 与标准 PCIe 的 TL、DL 层相同。相比于标准 PCIe,M-PCIe 引入了 MIPI M-PHY。M-PHY 能够进行快速的电源状态切换,从而降低功耗。M-PHY 仅在实际传输时处于最大功耗状态,Burst 传输完毕进入低功耗状态“STALL”,紧接着退至最低功耗“HIBERN8”状态。此外,M-PHY 支持非对称链路,允许链路上存在不同数量的收发器。

M-PCIe 功耗更低,但其支持的速率不如标准 PCIe 高。M-PCIe 支持 Gear1~3 三种速率,为 1.25 GT/s, 2.5 GT/s 及 5.0 GT/s,Gear2/3 分别对应 PCIe Gen1/2 速率。

MangoPapa 社区服务员 2022-02-28
  • 打赏
  • 举报
回复

2022.02.26 - PCIe Link Traning,都 Traning了什么?


位锁定、符号锁定、Block 对齐、链路宽度、链路速率、极性、链路反排、Lane 间消抖

MangoPapa 社区服务员 2022-02-25
  • 打赏
  • 举报
回复

2022.02.25 - Polling.Compliance 状态是做什么的?Compliance Pattern 是干啥的?


Polling.Compliance 是 LTSSM Polling 子状态之一,用于 PCIe 链路的合规性测试,与 PCIe 测试设备配合使用。Polling.Compliance 期间,收发端 PCIe 设备发送 Compliance Pattern,在相邻通路间产生最坏的干扰及 EMI,测试设备来评估待测 PCIe 链路上的电压、时序是否符合规范,并测试 EMI、BER 及串扰程度。Loopback 模式下,32 GT/s 及以上速率时,Loopback Master 发送 Modified Compliance Pattern。TS 或 Link Control Register 2 也可以特别要求发送 Modified Compliance Pattern。

正常操作中一般不会进 Polling.Compliance 状态,但是所有的 PCIe 设备 必须 实现该功能,这是其 DFT 不可或缺的一环。

Polling.Active 状态进入 Polling.Compliance 的 3 个条件(满足其一即可):

  1. Link Control 2 Register 的 Enter Compliance 位置一,即我方主动要求进入 Compliance。
  2. 24 ms 内 未进入 Polling.Configuration,且检测到的 Lane 中,有 lane 未退出电气闲。此时该 PCIe 设备在所有检测到的 Lane 上发送 Compliance Pattern。无源负载,比如 50 Ω 阻抗的探针或 50 Ω 接地阻抗连接到任一差分信号对上,都会使设备进入 Polling.Compliance。
  3. 24 ms 内 未进入 Polling.Configuration,且收到了对端发来的 8 个 TS1 中,Compliance Receive bit 置一,且 Loopback bit 为 0 (非 Loopback 模式)。

所有 Lane 退出电气闲 且发送完 1024 个 TS1 后,Polling.Compliance 退回到 Polling.Active。

MangoPapa 社区服务员 2022-02-24
  • 打赏
  • 举报
回复

2022.02.24 - PCIe Tx Scramble 放在 Encode 之前之后?为什么?


乱序应该放在编码之前。

发送序列中存在连续重复序列时,发送能量会集中在特定频点附近较窄的范围,产生较大的电磁辐射。scramble 乱序,是为了消除连续出现的重复序列,把能量集中的离散能量谱打散成白噪声,从而大大减小 EMI。

8b/10b,128b/130b,1b/1b 等编码,在串行数据流中加入时钟信息,使得接收端 PLL 能够从数据流中恢复出时钟。编码有以下益处:① 面减少时钟布线的问题;② 减小时钟线引入的电磁干扰;③实现直流平衡;④增强无码检测性能。

若先编码再乱序,数据流中的时钟信息会被破坏,直流均衡也难以保证。

MangoPapa 社区服务员 2022-02-23
  • 打赏
  • 举报
回复

2022.02.23 - Completer ID、Requester ID 与 BDF 的关系是什么?


TLP Header 中的 Requester ID, Completer ID 用以在 PCIe Hierarchy 中唯一标识生成、完成该 TLP 的 PCIe Function,两者均由 Bus Number、Device Number 及 Function Number 组成的 (ARI 没有Device Number)。Requester 的 BDF 称为 Requester ID,Completer 的 BDF 称为 Completer ID。

对于 MWr 等基于地址路由的转发事务而言,Requster ID 可有可无;对于 MRd 等基于地址路由的非转发事务而言,要求有 Reqesuter ID,其 Completion 中携带有 Completion ID 及 Requester ID。

MangoPapa 社区服务员 2022-02-22
  • 打赏
  • 举报
回复

2022.02.22 - PCIe 有哪几种路由方式?


PCIe 路由一般指 TLP 路由,DLLP 只在相邻设备 DL 间传递,不携带路由信息也无需路由。PCIe TLP 路由方式有 基于地址、ID 的路由及隐式路由 3 种,各组件根据 TLP Header 中的相关字段决定以何种方式路由该 TLP。

  • 地址路由:基于设备地址的路由,适用于 Memory 及 IO 请求(含 DMWr 及 Atomic)。Address 位于 TLP Header 的 Address 字段。基于地址路由的Memory 请求,地址可以为 32 bit 或 64 bit 地址;IO 请求采用 32 bit 地址。
  • ID 路由:基于设备 ID 的路由,适用于 Cfg 请求及 Completion。ID 位于 TLP Header 的 BDF 字段(对于 ARI 而言,只有 BF没有D)。
  • 隐式路由:适用于广播 Message,比如:中断、Error、电源管理、功率闲置、Lock 事务等消息及厂商自定义的消息。

参考:

  1. PCIe扫盲——TLP路由(Routing)基础
  2. ID ROUTING
  3. ADDRESS ROUTING
  4. IMPLICIT ROUTING
  5. PCIe ARI (Alternative Routing-ID Interpretation)介绍
MangoPapa 社区服务员 2022-02-21
  • 打赏
  • 举报
回复

2022.02.21 - Modified TS1/TS2 是什么?Modify了什么?为什么要Modify?


非 PCIe 协议运行在 PCIe PHY 上或发送 TS Message 时,在 LTSSM 部分子状态采用 Modified TS1/TS2。

允许发送 Modified TS1/TS2 的 LTSSM 子状态有 Cfg.Lanenum.Wait、Cfg.Lanenum.Accept、Cfg.Complete。在此之前的,必须在 Polling.Active、Polling.Cfg、Cfg.Linkwidth.Start、Cfg.Linkwidth.Accept 状态将 Standard TS1/TS2 Symbol 5 的 bit[7:6] 置为 2'b11,以此在收发端协商是否支持 Modified TS。只有在收发端均支持 Modefied TS 时,才能发送 Modified TS,否则仍然发送 Standard TS。

跟 Standard TS1 / TS2 比,Modified TS 更改了 Symbol 6~15,这些 Symbol 主要是均衡相关字段,采用 Modified TS 是为了在协商完毕链路宽度后,跳过 Lanenumber 协商及均衡。

MangoPapa 社区服务员 2022-03-02
  • 举报
回复
@MangoPapa 仍需要协商lane number,是并行的,跳过均衡
加载更多回复(14)

107,287

社区成员

发帖
与我相关
我的任务
社区描述
本社区给芯片工程师提供分享技术文章、讨论技术细节的场地。内容包括但不限于芯片设计、验证、封测。 数字IC精品文章收录(CSDN近500篇) http://t.csdn.cn/QbivO
社区管理员
  • MangoPapa
  • 张江打工人
  • IC_Novice
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 欢迎大家投稿、提问、回答问题 ~
  2. 有意愿服务本社区的请私信 MangoPapa 或 发邮件至 mangopapa@yeah.net
  3. 芯片相关友好社区,欢迎加入互通交流! “芯片爱好者聚集地社区” http://t.csdn.cn/sUFm

数字IC精品文章收录(CSDN近500篇)
       数字IC精品文章收录(500篇)

学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|

试试用AI创作助手写篇文章吧