【毅力挑战】PCIe 每日一问一答(2022.05 进行中)

简介: 【毅力挑战】PCIe 每日一问一答(2022.05 进行中)

2022.05.01 - First DW BE、Last DW BE 是什么?


First DW BE 和 Last DW BE 是 Memory 读写请求 TLP Header 中的一个字段,指示读写请求数据载荷中的第一个及最后一个 DW 中的数据 Byte 是否有效。First DW BE[3:0] 对应第一个 DW 的 Byte[3:0],Last DW BE[3:0] 对应最后一个 DW 的 Byte[3:0],如图 1 所示。


 若 BE 某 bit 为 0,表示该 byte 数据不能写入 Memory 或不可预取、不可读。若请求长度大于 1 DW,First DW BE 不能为 0;若请求长度等于 1 DW,Last DW BE 只能为 0;First/Last DW BE 的 4 bit 可以不连续。对于 Zero Read/Write,First/Last DW BE 均为 0。


6ce96a51a4e8401386825a807c205a23.png

▲图 1: First/Last DW Byte Enable 位置对应关系


2022.05.02 - PCIe Scrambling 中有哪两种 LFSR 方案?


PCIe Scrambling 中常用的两种 LFSR 方案为 Separated LFSR 与 Shared LFSR。


   Separated LFSR 方案,或称 Individual LFSR,是指 PCIe 链路中每条 Lane 都单独配一个 LFSR 进行 Scrambing,各条 Lane 的 LFSR 有自己的 Seed。 其原理图如图 2 所示。


   Shared LFSR,从名字也看得出来,共享的 LFSR,是指 PCIe 链路中所有链路共享同一 LFSR,不同 Lane 采用不同的抽头点位,其原理图如图 3 所示。


1f3d5ae2a87f4446939d5ff9976b40ab.png


▲图 2: Individual LFSR 原理图

8d61f48e44a44dcfaed6e2d5f942e1d6.png


2022.05.03 - 为什么要关闭加扰 Scrambling?


默认情况下 Scrambling 是打开的。Scrambling 的确有很多好处,比如减低 EMI,但在设备调试阶段,工程人员想要更容易地查看传输的数据,数据 Scrambling 无疑增加了数据辨识难度。为了更容易地查看传输数据,可以选择关闭 Scrambling 功能。只能在链路训练的 Configuration.Complete 阶段通过发送 Disable Scrambing 位(Symbol 5 Bit 3)为 1 的 TS1 或 TS2 来关闭对端的 Scrambling 功能,且只能在 8b/10b 编码期间来关闭 Scrambling。




2022.05.04 - 128b/130b 编码时,Sync Header 和 TS Symbol 0 不做 Scrambling,不会影响 DC Balance 吗?


 128b/130b 编码时 Sync Header 和 TS Symbol 0 不做 Scrambling,不会影响 DC Balance。Sync Header 为 01b 或 10b,TS Symbol 0 为 1Eh(00011110b),0、1 数量相同,本身已经实现了 DC Balance。



022.05.05 - PCIe 是如何检测块对齐丢失的?


 在链路训练期间,若 Rx 检测到了未定义的 Sync Header,则认为块对齐丢失(Loss of Block Alignment)。块对齐丢失是因为 Rx Block Alignment 失败,需要重新回退到 Unaligned Phase 进行块对齐。




2022.05.06 - STP 中的 FCRC 和 FP 都是干啥的?


 STP,Start of TLP,在 128b/130b 编码 Data Block 中指示开始发送 TLP 的 Frame Token,如图 2 所示。该 Token 中携带有接下来要发送的 TLP Length 及 TLP Sequence Number。TLP Length 是个相当重要的字段,为了保护该字段,STP 中规划了 FCRC (Frame CRC) 及 FP (Frame Parity) 两个字段来对 TLP Length 进行保护。


 FCRC 通过 10 Bit TLP Length 按照一定算法计算获得,只保护 TLP Length,能够检测出 2 Bit 错误。常规 FP 奇偶校验则是校验 TLP Length 及 FCRC 字段,缩减版 FP 只检验 TLP Length 中的特定位,能够检测出奇数位的 Bit 错误。



a671586e6c83426189813b846960e80b.png



▲图 4: STP Frame Token



2022.05.07 - EIOS 截断是什么?


 128b/130b 编码时,EIOS 由 16 个 66h 组成。若当前发送的 EIOS 之后紧接着还有 EIOS,那么必须发送完完整的 16 个 66h 当前 EIOS 才算发送完毕。若发送完当前 EIOS 接下来便进入电气闲,那么发送完 14 个 66h 后就可以停止发送 剩下的 66h,仍认为当前 EIOS 发送完毕,称为 EIOS 截断。


 EIOS 截断是为了解决 128b/130b 编码期间发送端可能存在的符号边界上的时钟边界不对齐情况。EIOS 截断不会影响接收端对 EIOS 的判断,因为接收端只需要收到 6 个 EIOS 就可以做出接收到 EIOS 的判断了。




2022.05.08 - 如果发送的 FTS 不够,导致从 L0s 回退到 L0 失败了怎么办?


 从 L0s 回退到 L0 时,Tx 发送 N_FTS 个 FTS。如果 Rx 在此期间实现了位锁定、符号锁定及块对齐,那么能够成功 回退到 L0。如果 Rx 再次期间没有完成位锁定、符号锁定及块对齐,那么 Rx 会超时退到 Recovery,沟通加大 N_FTS,在 Recovery 阶段完成未完成的锁定及对齐工作,然后进入 L0。


2022.05.09 -

2022.05.10 -

2022.05.11 -

2022.05.12 -

2022.05.13 -

2022.05.14 -

2022.05.15 -

2022.05.16 -

2022.05.17 -

2022.05.18 -

2022.05.19 -

2022.05.20 -

2022.05.21 -

2022.05.22 -

2022.05.23 -

2022.05.24 -

2022.05.25 -

2022.05.26 -

2022.05.27 -

2022.05.28 -

2022.05.29 -

2022.05.30 -

2022.05.31 -



目录
相关文章
|
缓存 异构计算 Perl
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
2280 3
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
|
机器学习/深度学习 存储 人工智能
模型只要「变大」就能直通AGI?马库斯再次炮轰:三个危机已经显现!
模型只要「变大」就能直通AGI?马库斯再次炮轰:三个危机已经显现!
128 0
|
存储 IDE 开发工具
【毅力挑战】PCIe 每日一问一答(2022.02 归档)
【毅力挑战】PCIe 每日一问一答(2022.02 归档)
3602 1
【毅力挑战】PCIe 每日一问一答(2022.02 归档)
|
缓存 C++
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
3350 1
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
|
5G 数据中心 C++
【PCIe 6.0】颠覆性技术!你NRZ相守20年又怎样?看我PAM4如何上位PCIe 6.0 !
【PCIe 6.0】颠覆性技术!你NRZ相守20年又怎样?看我PAM4如何上位PCIe 6.0 !
1120 0
【PCIe 6.0】颠覆性技术!你NRZ相守20年又怎样?看我PAM4如何上位PCIe 6.0 !
|
Android开发 C语言 C++
Altera FPGA开发过程中遇到的问题总结| 8月更文挑战
Altera FPGA开发过程中遇到的问题总结| 8月更文挑战