ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PCIE6.3 协议解析-Transaction Layer_1

PCIE6.3 协议解析-Transaction Layer_1 第二章 事务层2.2 Transaction Layer Protocol‑Packet Definition 事务层报文定义报文定义NFM/FM报文头部、OHC正交扩展头NFM Non‑Flit Mode传统PCIe报文模式TLP由Header DWpayloadECRC组成前缀是独立TLP PrefixLocal/End‑End前缀放在TLP头部前面。FM Flit ModePCIe6新增分片模式不再使用老的独立TLP前缀全部前缀信息挪进OHCOrthogonal Header Content正交扩展头OHC紧跟基础Header Base之后。OHC正交扩展内容一组可选DW扩展段OHC[4:0]位于FM TLP第一个DW位域编码表示后面存在哪些OHC块多个OHC同时存在时强制顺序A → B → C。TS[2:0]FM报文Trailer Size字段标识报文末尾Trailer尾部有多少DW用于放ECRC、IDE‑MAC、PCRC。IDE‑TLP完整性增强TLP需要OHC‑CTrailer携带IDE‑MAC/PCRC校验。UIOUnordered IO无序IO虚拟通道仅FM模式支持UIO TLP不能转换为NFM。Reserved保留位发送方必须写全0接收方必须忽略交换机透传时原样转发。PCIe是基于报文的协议两端器件事务层之间交换TLP报文。基础事务一共4大类Memory存储器、I/O、配置Configuration、Message消息。存储器请求支持两种地址格式32位短地址、64位长地址。UIO TLP绑定UIO虚拟通道的TLP。事务分为两大类Request请求、Completion完成包。Completion不是每个请求都有读请求必须返回CompletionI/O写、配置写也会返回Completion确认写完。所有UIO请求强制要求返回Completion。Completion靠报文头内Transaction ID事务ID字段和原始请求做匹配。保留字段规则构造TLP的时候所有标记Reserved保留位必须填0接收设备必须忽略保留位的值交换机转发不能修改保留位。注意部分字段有“规定值”和“保留值”两套编码这两种情况的处理规则协议分开定义。NFM与FM格式转换要点NFM和FM有两套完全不同TLP头部格式。当入端口和出端口模式不一样一边FM一边NFM端口必须做TLP格式翻译转换。部分TLP无法完成转换协议专门定义这类报错处理逻辑。2.2.1 公共报文头部字段2.2.1.1 Non‑Flit ModeNFM传统模式公共头部NFM TLP第一个DW的字节0包含Fmt[2:0]格式字段、Type[4:0]报文类型字段。Fmt[2:0]说明TLP头部DW长度以及报文后面有没有payload有效载荷。 Table2‑2Fmt[2:0]含义000b3DW头部无数据载荷001b4DW头部无数据载荷010b3DW头部带数据载荷011b4DW头部带数据载荷100b存在TLP Prefix前缀其余编码全部保留。Type[4:0]TLP事务类型决定报文是什么事务MRd存储器读、MWr存储器写、CfgRd配置读、Msg消息、Cpl完成包、原子操作等同时决定交换机如何路由该TLP。NFM头部其余字段DW0剩余bitDW1/DW2TC[2:0] Traffic Class流量类别虚拟通道VC选择依据。R保留位原来的LN轻量通知bit该特性已经废弃现在保留未来可重分配。TH(TLP Hints)1代表TLP头部存在TPH处理提示字段。Attr[1:0],Attr[2] 属性字段存储器事务的强/弱排序、可缓存属性。TD bitTLP Digest置1表示报文尾部携带ECRC端到端校验DW。EP Error Poisoned数据中毒标记标记payload数据已经损坏。Length[9:0]payload数据长度单位DW双字4字节。✅数据载荷必须4字节自然对齐。对于没有payload的TLPCpl完成包、CplLk锁定完成包、大部分Message消息Length字段是保留。Table2‑3FmtType组合表定义全部NFM TLPMRd、MRdLk、MWr、IORd/IOWr、CfgRd0/CfgWr0、CfgRd1/CfgWr1、DMWr可延迟存储器写、Msg/MsgD消息、Cpl/CplD/CplLk/CplDLk完成包、FetchAdd/Swap/CAS原子操作、LPrfx本地前缀、EPrfx端到端前缀。Table2‑4 Length编码Length值00_0000_0001b代表1DW最大值1023DWLength0代表1024DW载荷。⚠️极易踩坑Length0不是0字节是最大值1024DW。2.2.1.2 Flit ModeFM分片模式头部定义FM TLP报文语法结构报文组成顺序0个或多个1DW大小Local TLP Prefix本地前缀Header Base基础头部大小由Type[7:0]决定紧随其后0‑7DWOHC正交扩展头由OHC[4:0]字段指明有哪些OHC块TLP payload载荷0~1024DWTLP Trailer尾部可选TS[2:0]指明尾部DW数量放ECRC / IDE‑MAC /PCRCNOP TLP空报文链路没有其他TLP发送的时候必须发NOP填充报文接收设备收到NOP直接丢弃不产生任何影响NOP除Type字段以外其余头部全部是保留位。FM对比NFM关键架构变更重点NFM中独立的End‑End TLP前缀FM全部移入OHC扩展头不再放在报文最前面。NFM中Steering Tag、PH、ST、AMA、AV字段FM不再复用字节使能位置全部收拢放到OHC‑B里面。UIO TLP只允许FM链路禁止转换成NFM格式。如果UIO报文转发去往NFM出端口报不可纠正错误。FM Header Base第一个DW字段Figure2‑6从低bit到高bit字段Type[7:0]、TC流量类别、OHC[4:0]、TS[2:0]、Attr属性、Length长度。Type[7:0]FM的TLP类型比NFM的5bit更宽。所有接收器件必须完整解码全部Type编码哪怕硬件不支持该事务类型。流控FC要按照Type对应的FC类型处理。FC‑TypeNone的TLP接收端不需要缓存静默丢弃。Switch交换机要缓存、路由TLP包含保留编码的TLP。EP上游端口、RootPort必须缓存报文遇到不支持OHC内容允许丢弃不支持OHC部分但要做Header logging。TS[2:0] Trailer Size字段000b无Trailer001b1DW Trailer存放ECRC010b~111b不同DW长度的Trailer其中IDE‑MAC/PCRC只有OHC‑C存在并且标记IDE TLP时才有意义否则Trailer内容保留。OHC[4:0]字段5bit核心用来指示后面紧跟哪些OHC扩展块0 0000b没有OHCx xxx1bOHC‑A存在x xx1x bOHC‑B存在x x1xx bOHC‑C存在0 0xxx b无OHC‑E0 1xxx bOHC‑E11 0xxx bOHC‑E21 1xxx bOHC‑E4⚠️规则多个OHC同时存在时物理顺序强制OHC‑A → OHC‑B → OHC‑C不能乱序。 发送端特定TLP类型强制要求带上指定OHC 接收端检查OHC规则违例请求报文违反OHC强制规则报Unsupported Request不支持请求Completion报文违反OHC强制规则报Unexpected Completion意外完成包。全部OHC块逐条解析 A1/A2/A3/A4/A5 / B / COHC‑A组OHC‑A1 ~ A5同属OHC‑A大类OHC‑A表不同子A格式分别对应不同事务当报文使用A1那么A2‑A5所有bit全部保留。OHC‑A1Figure 2‑7适用场景带显式字节使能、带PASID的存储器请求ATS翻译请求。 字段NW(No‑Write)仅ATS翻译请求有效其余请求下该位保留。PV(PASID Valid)PASID有效位。PV0时PASID、ER、PMR全部保留必须为0。ER Execute RequestPMR Privileged Mode RequestATS翻译请求才使用其他请求保留。PASID进程地址空间ID。1st DW BE / Last DW BE第一个DW、最后一个DW字节使能。OHC‑A2Figure 2‑8用于IO请求只携带首DW、末DW字节使能其余bit保留。OHC‑A3Figure 2‑9用于配置事务。DSVDestination Segment Valid目标分段有效标记。DSV0则Destination Segment字段保留。Destination Segment目标Hierarchy分层域编号。OHC‑A4Figure 2‑10用于ID路由消息报文需要PASID或者Destination‑Segment的时候必须带A4。PV0 → PASID字段保留DSV0 → Destination Segment字段保留。OHC‑A5Figure2‑11Completion完成包专用就是前面讲跨Hierarchy返回Completion的扩展头LA[1:0] LowerAddress低地址两位。DSVDestination Segment有效位DSV0时Destination Segment保留。Destination SegmentCompletion要返回的目标分层域复制原始请求Requester_SegmentCompleter Segment响应方设备自身所属分层域编号Cpl StatusCompletion完成状态。OHC‑BFigure 2‑12⚠️重要OHC‑B仅允许用于【地址路由请求】别的TLP里面出现OHC‑B则B全部bit是保留。 用途承载TPH TLP处理提示相关PH、ST、AMA、AV字段。HV Hints‑Valid提示有效用来限定PH/ST哪些位有效00bPH、ST全部无效保留01bPH有效ST高8bit无效ST低8bit有效10b保留编码接收按00b处理11bPH全部、ST全部字段有效PHProcessing Hint处理提示STSub‑Stream子流IDAVAMA有效位AV0时AMA字段保留。AMAAddress Mask Attribute地址掩码属性。OHC‑CFigure 2‑13【分段IDE TLP核心】字段列表Requester Segment请求发起方所在Hierarchy分层域编号RSVRequester‑Segment ValidRSV1代表Requester‑Segment字段有效RSV0该字段保留。PR_Sent_CounterStream_ID流IDSub‑Stream子流R、K、T字段OHC‑C硬性规则高频易错IDE‑TLP必须携带OHC‑C。Sub‑Stream 000b/001b/010bPR_Sent_Counter、Stream_ID、K、T有效Sub‑Stream011b~100b接收行为未定义IDE Completion报文Requester‑Segment字段保留RSV必须清0。非IDE TLP携带OHC‑C时Sub‑Stream必须等于111b。此时PR_Sent_Counter、StreamID/K/T全部保留。IDE‑TLP注意IDE报文不能在FM/NFM边界做转换一旦IDE TLP从FM端口发往NFM端口报文必须丢弃报Misrouted IDE‑TLP错误。NOP报文严禁被标记成IDE TLP。Segment分段字段完整规则只存在FM模式Segment的两大作用跨Hierarchy分层域P2P路由让RC不需要强制对NP请求做taking‑ownership接管Completion报文依靠Destination‑Segment直接路由回原始发起端分层域。错误日志增强AER日志里带上Segment多个Hierarchy内存在相同BDF号的时候可以区分是哪个域设备报的错。字段位置总结Requester‑Segment存于OHC‑C标记请求发起设备所在分层域RSV位控制该字段是否有效。Completer‑Segment存于OHC‑A5标记响应设备所在分层域。Destination‑SegmentOHC‑A3 / OHC‑A4 / OHC‑A5DSV位控制是否有效告诉交换机该报文要送往哪个分层域。配置写请求FM模式下Root Port发出配置TLP强制携带OHC‑A3DSV1填入正确Destination‑SegmentCompleter设备依靠这个配置报文捕获自己Segment值。高频踩坑容易理解错误汇总❌Length0代表0DW数据 ✅Table2‑4Length0 → payload1024DWLength只有1‑1023直接对应DW数量。❌FM模式下本地前缀还是放在TLP报文最前面 ✅FM模式Local TLP Prefix依旧在报文最开头老的End‑End前缀全部取消功能迁移进OHC扩展头。❌OHC块可以随便排顺序 ✅当多个OHC同时存在物理DW顺序强制A→B→C不能调换。❌UIO TLP可以做FM→NFM转换 ✅UIO仅FM转发到NFM端口直接报错不可纠正错误。❌OHC‑B可以用于Completion包、消息报文 ✅协议明确OHC‑B只允许地址路由请求其余TLP里面OHC‑B全部bit保留。❌DSV1可以随便写Destination‑Segment ✅DSV0时硬件强制忽略该字段字段内容是保留发送方写0。❌只要带上OHC‑C就一定是IDE TLP ✅不是非IDE报文也允许带OHC‑C但是此时Sub‑Stream必须111bIDE‑TLP是Sub‑Stream取000/001/010。❌Trailer的IDE‑MAC一直有效 ✅只有OHC‑C指明该TLP是IDE TLP的时候TS字段里面IDE‑MAC/PCRC才生效其余情况Trailer对应位置是保留内容。❌FM模式Type字段和NFM一样是5bit ✅NFM Type是5bitFM的Type拓宽为8bit Type[7:0]。❌NOP报文可以带IDE标记 ✅协议强制禁止NOP不能当IDE‑TLP如果收到NOP标记IDE判定畸形报文Malformed TLP。❌配置请求的Completion也要携带Destination Segment ✅配置请求本身不带Requester_Segment所以对应的Completion不携带Destination Segment只依靠Transaction ID在RP内完成匹配。❌RSV1/DSV1可以独立随便置位 ✅RSV0则Requester‑Segment字段硬件层面当作保留DSV0Destination‑Segment当作保留发送端必须对应字段写0接收直接忽略。NFM vs FM头部核心差异速表项目NFM Non‑Flit ModeFM Flit ModeFmt2bit Fmt字段控制头部DW长度、有无数据取消Fmt头部长度完全由8bit Type[7:0]决定TLP Prefix独立前缀LPrfx/EPrfx放在报文头部之前Local前缀保留End‑End前缀全部移入OHC扩展头扩展机制TLP Prefix前缀OHC正交扩展头A/B/C/E系列尾部校验TD位控制ECRC DWTS[2:0] Trailer Size支持ECRC、IDE‑MACPCRC分段Segment不存在Segment字段Requester‑Segment(OHC‑C),Destination‑Segment(OHC‑A3/A4/A5),Completer‑Segment(OHC‑A5)字节使能放在TLP头部DW挪入OHC‑A1/A2TPH PH/ST/AMA复用头部保留bit全部放入OHC‑BUIO支持不支持UIO虚拟通道原生支持UIOUIO报文禁止转NFM
返回列表