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

相关新闻

Alock双核心功能详解:「隐藏应用」与「锁定应用」有什么区别?一文讲透两个开关的用法

Alock双核心功能详解:「隐藏应用」与「锁定应用」有什么区别?一文讲透两个开关的用法

Alock双核心功能详解:「隐藏应用」与「锁定应用」有什么区别?一文讲透两个开关的用法 【免费下载链接】Alock 📱 Alock 是一款免费用于隐藏指定 App 的应用。使用 Alock 可以彻底地从 iPhone/iPad 上隐藏指定的 App,隐藏后的 App …

2026/8/26 20:10:47 阅读更多 →
关系型数据库也能玩NoSQL:Doctrine JSON ODM混合数据模型完全入门

关系型数据库也能玩NoSQL:Doctrine JSON ODM混合数据模型完全入门

关系型数据库也能玩NoSQL:Doctrine JSON ODM混合数据模型完全入门 【免费下载链接】doctrine-json-odm An object document mapper for Doctrine ORM using JSON types of modern RDBMS. 项目地址: https://gitcode.com/gh_mirrors/do/doctrine-json-odm Doc…

2026/8/26 20:09:46 阅读更多 →
WeChatMsg:免费、完整、快速导出微信聊天记录的本地化工具

WeChatMsg:免费、完整、快速导出微信聊天记录的本地化工具

WeChatMsg:免费、完整、快速导出微信聊天记录的本地化工具 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…

2026/8/26 20:09:46 阅读更多 →

最新新闻

基于开源RAG框架快速搭建私有知识库智能问答系统实战指南

基于开源RAG框架快速搭建私有知识库智能问答系统实战指南

1. 项目概述:从“茴香豆”到你的专属智能助理最近在社区里看到不少朋友在讨论RAG(检索增强生成),想自己动手搭一个智能助理,但又被各种框架、术语和复杂的流程给劝退了。这让我想起了之前研究“茴香豆”这个开源RAG项目…

2026/8/26 21:48:55 阅读更多 →
深入解析SparkSession:从统一入口到多租户隔离的实战指南

深入解析SparkSession:从统一入口到多租户隔离的实战指南

1. 从“入口”到“引擎”:重新认识 SparkSession 的价值 如果你刚开始接触 Spark,或者已经用了一段时间,可能对 SparkSession 这个名字既熟悉又陌生。熟悉是因为几乎每个 Spark 应用的开头,你都会看到 SparkSession.builder().…

2026/8/26 21:48:55 阅读更多 →
Oracle BCA 19c数据库创建实战:从图形界面到静默部署的完整指南

Oracle BCA 19c数据库创建实战:从图形界面到静默部署的完整指南

1. 项目概述:为什么从DBCA开始? 如果你刚接触Oracle,或者从老版本升级到19c,第一个绕不开的实操环节就是创建数据库。很多人觉得这有什么难的,找个文档照着敲命令不就行了?但实际干过运维的都知道&#xff…

2026/8/26 21:48:55 阅读更多 →
深入解析实时操作系统:从核心原理到工程实践

深入解析实时操作系统:从核心原理到工程实践

1. 实时操作系统:当“确定性”成为生命线在嵌入式开发领域摸爬滚打了十几年,我见过太多因为对“实时性”理解偏差而导致的“翻车”现场。一个看似运行流畅的智能家居网关,可能在某个瞬间漏掉一条关键指令,导致设备状态不同步&…

2026/8/26 21:48:55 阅读更多 →
蓝桥杯Python国赛工程能力实战指南

蓝桥杯Python国赛工程能力实战指南

1. 这不是一场普通编程考试,而是一次Python工程能力的实战压力测试 蓝桥杯软件赛国赛Python大学B组,听起来像一张试卷、一次刷题训练,但实际走进考场那一刻,你面对的是一套完整闭环的工程化交付场景——它不考你背了多少语法糖&am…

2026/8/26 21:48:55 阅读更多 →
SQL LIMIT子句深度解析:从基础语法到高效分页实战

SQL LIMIT子句深度解析:从基础语法到高效分页实战

1. 项目概述:从“取几条数据”到“分页与性能”的思维跃迁“不就是用LIMIT取前几条数据吗?” 这可能是很多初学者对 SQL 中LIMIT子句的第一印象。在我十多年的数据库开发和调优经历里,见过太多因为对这个看似简单语法的理解停留在表面&#x…

2026/8/26 21:47:54 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →