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

简介: 【毅力挑战】PCIe 每日一问一答(2022.02 归档)

2022.02.07 - PCIe 有序集有哪几种?


PCIe 物理层包(Physical Layer Package, PLP)又称有序集(Ordered-Set),长度为4B整倍数,用于链路训练、时钟偏差补偿、使链路进入电气闲或退出电气闲。PCIe 有序集有以下几种:


  • TS0 / TS1 / TS2,用于链路初始化、训练、协商等,TS0出现于PCIe 6.0。


  • SKPOS,用于收发端时钟补偿。


  • EIOS,使链路进入电气闲。


  • EIEOS,使链路退出电气闲。


  • FTSOS,使链路退出低功耗模式。


  • SDS,标志数据流开始,仅用于Gen3及以上。(EDS 为 Framing Token,非有序集)



2022.02.08 - RCRB 是什么?


RCRB全称根复合体寄存器块(Root Complex Register Block),在常规配置空间之外额外指定4KB存储空间给RC用,该4KB空间所在的地址空间不能与常规配置空间或内存空间出现重叠。RCRB使用方式与常规配置空间类似,可用作PCIe的扩展能力寄存器或其他指定寄存器。




2022.02.09 - CPL 状态有哪几种?


PCIe Requester发出的所有PCIe Rd、NPWR、Atomic请求及PCIE 6.0的DWMR请求均需要Completer返回CPL/CPLD,CPL/CPLD中含有Cpl.Status字段,指示完成情况。那么CPL状态有哪几种呢?如下:


   SC,Successful Completion,请求成功

   UR,Unsupported Request,不支持的请求

   CA,Completer Abort,支持但由于违例等原因被终止了

   RRS,Request Retry Statys,需要重新发生请求。在Gen6之前叫CRS,即Configuration Request Retry Status,PCIe 6.0 的 DMWR也支持请求重传,所以把configuration去掉了。


   其他预留


2022.02.10 - Completion timeout 机制是什么?


PCIe设备发出的请求中有些请求需要Completer反馈Completion,此时Requester会等待Completion再进行下一步操作。在某些异常情况下,比如配置不当、系统故障等,Requeser无法收到Completion。为了不影响进一步使用,需要一种超时退出机制让Requester从这种等待状态恢复过来,这就是超时退出机制。


几点注意事项:


   发生Completion Timeout时,Requester上报错误。


   由于Switch仅用于交换请求不生成请求,Completion Timeout机制仅限于用在RC、EP及Bridge上,不适用与Switch。


   Completion Timeout机制默认打开,用户可通过配置Device Control 2寄存器来关闭该机制。Completion Timeout Value有几种选择,用户可通过配置Device Control 2寄存器进行选择。如果设备不支持可变的timeout value配置,那么在设计的时候,FLIT Mode下应把Timeout Value设置为40ms~50ms,非Flit Mode下应设置为50us~50ms(建议最少10ms)。


   对于有多笔CPLD的MRd请求,若CPLD被中断,此前Requester收到的Data可以保留也可以丢弃。


2022.02.11 - PCIe RC / EP / EPiRC 是什么?


   RC,Root Complex,根复合体,PCIe树的根,连接CPU、主存及PCIe Bridge/EP/Switch等。


   EP,Endpoint,端点,具体的PCIe设备,比如带有PCIe接口的网卡、存储卡等。

   RCiEP,集成了EP的RC。



2022.02.12 - PCIe BAR 是什么?


BAR,Base Address Register,是PCIe配置空间中从地址0x10开始的6个基地址寄存器,用以存储PCIe设备在PCIe地址空间中的基地址。该基地址非CPU内存的映射地址,两者间存在映射关系。通过配置PCIe设备BAR可以实现PCIe地址空间的动态分配。




2022.02.13 - PCIe 转发、非转发事务是什么?


转发事务,请求者发送TLP到完成者,无需完成者进行反馈。转发事务有MWr,Message。


非转发事务,请求者发送TLP到完成者,按照分割事务进行处理,需要完成者进行反馈。非转发事务有MRd,DMWr,IORd,IOWr,CfgRd,CfgWr。


由于转发事务无需反馈,其比非转发事务性能更高。非转发事务出错时,可以得到硬件通知;转发事务出错时,只能通过完成者记录错误并上报RC,由软件进行处理。


参考:non-posted事务和posted事务




2022.02.14 - PCIe 6.0 有哪些新变化?


   单 Lane 传输速率由 32 GT/s 变为 64 GT/s;


   传输信号由 NRZ 两电平变为 PAM4 四电平;


   编码方式由 128b/130b 变为 FLIT 编码;


   引入了 FEC 前向纠错机制,并维持既有的 Retry 重传机制;


   LTSSM 新增加了 L0p 低功耗状态,允许部分 Lane Electric Idle、部分 Lane Active;

   新加了几种机制:DOE、CMA、DMWr、IDE。


参考:PCIe 6.0,到底 6 在哪?



2022.02.15 - PCIe 有哪几种参考时钟架构?


PCIe 有3种时钟架构,分别为:


   Common Refclk Architecture,通用参考时钟,收发端共享参考时钟。


   Data Clocked Refclk Architecture,仅发送端需要refclk,接收端CDR Refclk参考时钟从数据流中恢复。


   Separate Refclk Architecture,收发端采用独立的参考时钟,根据有无时钟扩频(SSC)可进一步分为SRNS及SRIS。


552cfc67df35460e912843d67843af9f.png


三种基本 PCIe 参考时钟架构


友情链接:


   PCIe 参考时钟架构 (Refclk Architecture)


   关于PCIe参考时钟的讨论


   PCIe 的时钟结构




2022.02.16 - PCIe Crosslink 是什么?


为了解决不同处理器间的互联问题, PCIe 提供一种 Crosslink 的链接方式。两个同方向的 Port 相接称为 PCIe Crosslink,比如 Downstream Port 接 Downstream Port 或 Upstream Port 接 Upstream Port PCIe。


Cosslink 是一种可选的能力。支持 Crosslink 的两个 PCIe 设备在 Link Training 的时候沟通谁是 DSP 谁是 USP(具体可搜索 Crosslink random time)。


友链:PCIe中的Crosslink与Multi-Root/Multi-Processor系统



2022.02.17 - PCIe 复位机制


PCIe有四种复位方式:冷复位(Cold Reset)、暖复位(Warm Reset)、热复位(Hot Reset)及功能层复位(Function Level Reset)。简介如下:


   冷复位 - 关主电源,可通过sideband信号或power state两种方法实现冷复位。


   暖复位 - 不关主电源,无特定规范,可选方案,可自行设计。


   热复位 - Inband实现。Switch的Upstream Port收到热复位时,复位其自己并广播给其Downstream Port来复位Downstream Port;Switch的Dpstream Port收到热复位时,只复位其自己。


   功能层复位 - 对于多Function的Device,可以只复位特定的Function。FLR只复位内部状态及寄存器。


冷复位和暖复位基于边带信号由系统生成,称为基本复位,由硬件触发;热复位由上游设备生成,以包(TS有序集)的形式传达到下游,由软件触发。


PCIe设备复位释放后,重新进行链路训练及初始化,需等待至少100ms才能向其发出访问请求。若初始化之前便收到了配置请求,需返回RRS CPL要求重传。


友情链接:


   PCIe扫盲——复位机制介绍(Fundamental & Hot)


   PCIe扫盲——复位机制介绍(FLR)




2022.02.18 - 当同一 Requester 有多笔 MRd 发出时,加之 Flow Control 中 MRd、CPLD不 保序,如何知道 CPLD 回的是哪笔 MRd 的数据?


对于不同的 Completer 或 VC,可以根据 CPLD TLP Header 中的 TC 和 Completer ID 来判断该笔 CPLD 归属于哪一笔 MRd。


对于同一 Completer 同一 VC,问题所言的情况(多笔 MRd,MRd/CPL 失序)不会发生。MRd 是非转发请求,Requester 在发出 MRd 请求后,在收完 CPL/CPLD 或 CPL Timeout 之前不会发下一笔 MRd。即便能够连续发出多笔 MRd,也不涉及 MRd/CPLD 失序的情况。Flow Control机制对于不同 VC 不保序,但是对同一VC是保序的,MRd 在Flow Control NPR Buffer中按照先入先出的顺序发出。




2022.02.19 - Logic Idle Symbol 与 Idle Symbol (IDL) 是一样的吗?与 EIOS 有何关系?


不一样。


Logic Idle Symbol ,逻辑闲符号数据是 0x00,与 EIOS 没啥特定关系,当链路上临时没有数据包要发送时候(链路逻辑闲),发送器继续发送逻辑闲符号。


Idle Symbol (IDL) ,数据是 0x7c,是 EIOS @Gen1/Gen2 中的一个符号。

Gen1/Gen2时,一个 EIOS 由 1 COM + 3 IDL 组成,Gen3 及以上时 EIOS 由 16 个 0x66组成。


Tx Logic Idle 时,所有 lane 上都发 Logic Idle Symbol。


更多请看本人博文:【PCIe有点闲】电气闲,逻辑闲,到底谁更闲?




2022.02.20 - PCIe SDS/EDS 是什么?


SDS,全称 Start of Data Stream Ordered Set,在发送Data Block 第 1 DW 前发送。与之对应的是EDS,发送Data Block 最后 1 DW 后发送 EDS,标志数据块的结束,下一笔就是 OS 有序集了。


发送 SDS 对链路状态有所要求,在 LTSSM 跳转到 L0 状态前的最后一个子状态发送 ,包括 Cfg.Idle、Rcvr.Idle、Tx_L0s.FTS,且只能在这些状态时发送。


SDS/EDS 仅适用于Gen3 及以上速率,不适用于 Gen1/Gen2 是因为 Gen1/Gen2 时还没出现 SDS/EDS,协议要兼容老版本。Gen1/Gen2 时,LTSSM 跳到 L0 前不发 SDS 发啥?在所有lane上同时发 Logic Idle Symbol,就是0x00。


Loopback 时,OS<->DataBlock切换时 Tx 无需发送 SDS 或 EDS,Rx 也 无需检查 SDS 或 EDS。




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 是为了在协商完毕链路宽度后,同时协商Lane number及alternate protocolol,并bypass EQ。




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 事务等消息及厂商自定义的消息。


参考:


   PCIe扫盲——TLP路由(Routing)基础


   ID ROUTING


   ADDRESS ROUTING


   IMPLICIT ROUTING


   PCIe ARI (Alternative Routing-ID Interpretation)介绍



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。




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


乱序应该放在编码之前。


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


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


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




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 个条件(满足其一即可):


   Link Control 2 Register 的 Enter Compliance 位置一,即我方主动要求进入 Compliance。


   24 ms 内 未进入 Polling.Configuration,且检测到的 Lane 中,有 lane 未退出电气闲。此时该 PCIe 设备在所有检测到的 Lane 上发送 Compliance Pattern。无源负载,比如 50 Ω 阻抗的探针或 50 Ω 接地阻抗连接到任一差分信号对上,都会使设备进入 Polling.Compliance。


   24 ms 内 未进入 Polling.Configuration,且收到了对端发来的 8 个 TS1 中,Compliance Receive bit 置一,且 Loopback bit 为 0 (非 Loopback 模式)。

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




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


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

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 速率。




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)。



目录
相关文章
|
缓存 异构计算 Perl
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
2586 3
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
|
缓存 C++
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
3715 1
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
|
算法
【毅力挑战】PCIe 每日一问一答(2022.05 进行中)
【毅力挑战】PCIe 每日一问一答(2022.05 进行中)
1344 0
【毅力挑战】PCIe 每日一问一答(2022.05 进行中)
|
机器学习/深度学习 传感器 人工智能
一文详解深度学习冷板式液冷散热技术规范及要
《绿色数据中心创新实践——冷板液冷系统设计参考》是在生态伙伴积极参与和大力支持下,应对 IT 设备功耗和功率密度的增加,需要新的冷却技术来满足不断提高的计算性能需求,而共同探索和提出的更经济、更高效的冷却方案参考。
1332 0
一文详解深度学习冷板式液冷散热技术规范及要
|
存储 缓存 固态存储
面对SSD的步步紧逼,HDD依然奋斗不息
固态硬盘的步步紧逼,机械硬盘厂商也不会坐以待毙等着被SSD取代。HDD的厂商也在不断的创新,增加HDD的竞争优势。
|
存储 固态存储 大数据
【阿里云总监课】存储系统设计——NVMe SSD性能影响因素一探究竟
NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程。本文从NVMe SSD的性能影响因素进行分析,并给出存储系统设计方面的一些思考。
4785 0
|
存储 固态存储 内存技术
技术市场分析:闪存阵列中默默服务的SAS SSD
- NAND闪存与固态盘市场统计; - 三星:大容量点凭借闪存优势; - WD/HGST:Intel合作+多次收购庞大阵容; - 东芝:NAND闪存+SAS硬盘先天优势; - 如何更好地使用SSD:成本、性能、寿命
1921 0
下一篇
无影云桌面