PCIe学习之《理解TLP的基本结构》
PCIe学习之《理解TLP的基本结构》理解TLP的组成帧头Header 数据载荷Data Payload Digest可选理解帧头各字段含义Fmt[1:0]字段表示帧头大小以及是否包含数据载荷00b 3DW 头部无数据01b 4DW 头部无数据10b 3DW 头部有数据11b 4DW头部有数据。Type[4:0]字段Type 字段与 Fmt[1:0] 字段一起使用以指定事务类型、头部大小以及是否存在数据载荷。具体表示事务类型见附表。TC流量类别TC用于为TLP分配优先级支持8个等级TC0到TC7数值越大优先级越高绝大多数设备默认使用TC0。系统会为高优先级TC如TC7分配独立的VC缓冲区确保其优先被处理。正确使用TC可避免重要数据如视频流被海量普通数据阻塞。TDTLP 摘要字段存在设置为 1 时该 TLP 包含可选的 1 DW TLP 摘要字段其中包含 ECRC 值。所有接收端必须使用此位检查摘要字段的存在。TD1 但无摘要字段的 TLP 被处理为畸形 TLP。如果设备支持 ECRC 检查且 TD1则必须执行 ECRC 检查。如果设备不支持 ECRC 检查可选则必须忽略摘要。EP中毒数据EP 0数据有效。EP 1数据无效。事务仍会正常完成但接收方应忽略数据。此机制常用于错误处理。Attr属性Bit 5 Relaxed Ordering (宽松排序)当 0 时严格排序如同在单车道上按序行驶所有TLP数据包必须严格按照发出的顺序到达前一个未完成后一个就不能超车。这会拖慢传输速度尤其在大数据量时。当 1 时宽松排序允许“超车”。在高速公路上如果目的地不同不同数据流允许后面的车TLP超过前面的车。这能大幅提高总线利用率和吞吐量是PCIE高速传输的关键。Bit 4 No Snoop (禁止侦听)当 0 时默认需要侦听当CPU要读取数据时会先检查缓存Cache 里是否已有副本即“Snoop侦听”过程。这会产生额外开销但在需要保证数据一致性时是必需的。当 1 时禁止侦听明确告诉系统“别查缓存了直接从内存拿数据”这跳过了缓存检查让数据传输“飞”起来但不保证CPU缓存与内存数据完全同步。Length [9:0]TLP 数据载荷传输大小以 DW 为单位。最大传输大小为 10 位2^10 1024DW4KB。编码0000000001b 1DW … 1111111111b 1023DW0000000000b 1024DW。Last DW和First DW字节使能TLP包传输的最小单位是4字节DW如果一次传输不满足四字节整数倍时就需要用到Last DW和First DW字段用来屏蔽掉4字节中多余的字节以保证传输字节的任意性。例如我要通过一个TLP包传输27字节的数据此时不满足4字节的整数倍可以设置First DW1100b使第一个DW的后两个字节有效设置 Last DW0001b使最后一个DW的第一个字节有效。中间的24字节刚好6个DW。理解数据载荷可选字段。0-1024 DW 载荷可进一步使用字节使能来获得字节地址和字节传输大小分辨率。理解Digest可选可选字段。如果存在始终为 1 DW 大小。用于端到端 CRCECRC和数据中毒。理解3DW Header和4DW Header的区别32位 vs 64位地址寻址注意3DW 头部和 4DW 头部之间的区别在于起始地址字段的位置和大小3DW 头部32 位寻址地址位 31:2 在 Bytes 8-11 中Bytes 12-15 不使用。4DW 头部64 位寻址地址位 31:2 在 Bytes 12-15 中地址位 63:32 在 Bytes 8-11 中。其他头部字段相同。列出TLP的四种事务类型Memory、IO、Configuration、Message地址空间事务类型用途内存Memory读、写向/从系统内存映射中的某个位置传输数据。协议还支持锁定内存读事务。IO读、写向/从系统 IO 映射中的某个位置传输数据。PCI Express IO 地址分配给传统设备。原生 PCI Express 设备不允许使用 IO 寻址。配置Configuration读、写向/从 PCI Express 设备配置空间中的某个位置传输数据。与 PCI 一样配置用于发现设备能力、编程即插即用功能并使用 4KB PCI Express 配置空间检查状态。消息Message基线、厂商特定提供带内消息传递和事件报告不消耗内存或 IO 地址资源。这些事务的处理方式与 posted 写事务相同。

相关新闻

如何利用Cool Request实现3倍API开发效率:IntelliJ IDEA中的智能调试革命

如何利用Cool Request实现3倍API开发效率:IntelliJ IDEA中的智能调试革命

如何利用Cool Request实现3倍API开发效率:IntelliJ IDEA中的智能调试革命 【免费下载链接】cool-request IDEA API、Java Method debug tools 项目地址: https://gitcode.com/gh_mirrors/co/cool-request 在Java后端开发领域,API调试和测试一直是…

2026/10/13 15:34:24 阅读更多 →
轮式人形机器人能用来做什么?

轮式人形机器人能用来做什么?

“稳不稳?贵不贵?多久能回本?坏了好修吗?会不会撞到我工人?”每次见客户,他们都把同样的问题甩在桌上,像五把匕首,刀刀见血。我理解。你被PPT机器人骗了太多次——那些在展馆里走两步…

2026/10/12 20:17:08 阅读更多 →
Keyboard Chatter Blocker:智能解决机械键盘连击问题的终极指南

Keyboard Chatter Blocker:智能解决机械键盘连击问题的终极指南

Keyboard Chatter Blocker:智能解决机械键盘连击问题的终极指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否曾因机…

2026/10/9 4:57:00 阅读更多 →

最新新闻

多个申购单如何智能聚合生成一个采购单

多个申购单如何智能聚合生成一个采购单

1. 项目概述:从散乱申购到聚合采购的业务逻辑跃迁“如何多个申购单生成一个采购单”——这句话听起来像一句日常办公场景里的操作提问,但背后藏着企业供应链管理中一个极其关键的效率瓶颈。我接触过不少中小制造企业和高校后勤部门的实际案例&#xff0c…

2026/10/13 15:34:17 阅读更多 →
Vim补全插件配置全攻略:vim-plug+coc.nvim+语言服务器

Vim补全插件配置全攻略:vim-plug+coc.nvim+语言服务器

1. 为什么每个 Linux 用户都该装一套 Vim 补全插件刚开始用 Linux 的人,多半会被 Vim 卡在“退出”上,但真正开始拿 Vim 写代码、改配置的人,很快就会遇到另一个坎:默认 Vim 的补全实在是太原始了。你按下 Ctrln,它只能…

2026/10/13 15:34:17 阅读更多 →
合伙人招募中“输出你的insights”:认知资产与申请策略

合伙人招募中“输出你的insights”:认知资产与申请策略

当你在社媒上刷到一句"输出你的insights,我们在招募这些方向的合伙人"时,大概率有两种反应:要么觉得又是一轮画饼招聘,划走了;要么心里咯噔一下,因为这多半是你正在深夜琢磨的那个方向。作为一个…

2026/10/13 15:34:17 阅读更多 →
仅用Redis实现视频在线人数统计:心跳Hash+定时清理方案

仅用Redis实现视频在线人数统计:心跳Hash+定时清理方案

视频详情页上那个"XX人正在观看"的数字,看着不起眼,真要做得稳、做得准,比想象中更容易翻车。我之前在一个播放类项目里被这个需求折腾过,第一版方案用的是Redis Key过期事件:用户进播放页就写一个带10分钟T…

2026/10/13 15:34:17 阅读更多 →
雷达信号分选MATLAB实现:从PDW提取到联合特征聚类

雷达信号分选MATLAB实现:从PDW提取到联合特征聚类

简介:本资源是一套面向雷达信号处理初学者与进阶研究者的MATLAB实战代码包,聚焦雷达信号分选这一核心任务,适用于电子工程、信号与信息处理等专业方向的学习与课程设计。项目基于聚类思想(含K-means、DBSCAN等方法)&am…

2026/10/13 15:34:17 阅读更多 →
Windows 上从零安装配置 Claude Code 完整指南:Node.js、终端与 VS Code 集成

Windows 上从零安装配置 Claude Code 完整指南:Node.js、终端与 VS Code 集成

1. 为什么 Windows 上跑 Claude Code 值得单独写一篇在 Mac 和 Linux 上装 Claude Code,基本就是一行命令的事。但到了 Windows,情况立刻变得复杂起来:终端环境有 CMD、PowerShell、Windows Terminal、Git Bash 好几套,Node.js 的…

2026/10/13 15:33:17 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →