news 2026/6/14 6:57:50

pcie 配置请求与存储器请求

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pcie 配置请求与存储器请求
  • 配置请求 = 找设备、设参数、读 BAR、枚举 BDF(靠BDF 路由
  • 存储器请求 = 真正读写寄存器、数据交互(靠地址 + ATU 路由

PCIe 只有两种核心请求

  1. 配置请求(Configuration Request)
  2. 存储器请求(Memory Request)

配置请求 Config Request

用途:找设备、管设备

什么时候用?

  • 内核扫描 PCIe 拓扑
  • 读 Vendor ID/Device ID
  • 读 / 写BAR寄存器
  • 配置BDF 路由表(Primary/Secondary/Subordinate Bus)
  • 配置MSI 中断、电源、链路速度
  • 访问ECAM 地址触发的就是它

路由方式:

只看 BDF,按 Bus 号路由 → 桥只转发,不看 Dev/Func

走哪里:

CPU → ECAM → Root Port →BDF 路由表→ 桥 → 设备配置空间

关键:

和地址无关,和 BAR 无关,和 ATU 无关!

存储器请求 Memory Request

用途:真正干活(读写寄存器、DMA)

  • 驱动ioread32 / iowrite32
  • 读写设备内部寄存器
  • 读写设备片上 RAM
  • 设备 DMA 读写内存

路由方式:

只看地址 → 走 ATU 翻译 → 地址路由

走哪里:

CPU →BAR 物理地址→ Root Port →ATU 翻译→ PCIe 总线地址 → 设备

关键:

和 BDF 路由表无关!只认地址。

核心区别

项目配置请求 Config存储器请求 Memory
干啥枚举、配置、读 BAR、设 BDF读写寄存器、DMA、数据交互
路由依据BDF(Bus 号)CPU 物理地址(BAR)
谁转发桥的 BDF 路由表Root Port / ATU
地址类型ECAM 地址BAR 物理地址
是否走 ATU不走必须走 ATU
硬件行为桥逐级转发地址翻译 + 直达设备
触发来源内核 PCI 子系统驱动 / 设备 DMA
  • 配置请求 = 给设备上户口、分配地址、设门牌号
  • 存储器请求 = 按门牌号直接上门访问

IO 请求

远古遗留的 “独立小地址空间” 访问请求

  • x86 才有(64KB IO 空间)
  • ARM64 根本没有
  • 现代 PCIe 基本不用
  • 路由方式和存储器请求几乎一样,只是地址空间不同

访问操作

  • CPU 执行:inb/outb/inw/outw/inl/outl
  • 访问独立的 IO 地址空间(不是内存,不是配置)
  • 最大64KB(0x0000 ~ 0xFFFF)
  • 设备通过IO BAR声明自己要用这段空间

它和 Memory 请求唯一区别:

  • 地址空间不一样
  • 路由、转发逻辑几乎一样(都是地址路由)
  • 不走 BDF 路由

IO 请求 硬件流程(x86)

CPU 执行 outl(0x3F8, val) ↓ 发出 IO 地址 0x3F8 ↓ 送到 Root Port ↓ 地址路由(匹配 IO 范围) ↓ 发到 PCIe 总线(IO 报文) ↓ 设备识别:这是我的 IO 地址 ↓ 响应

没有 ATU 翻译,没有 BDF 查表,纯地址路由;

IO 请求 = 访问 x86 独有的 64KB IO 空间;

真实硬件流程对比

① 配置请求流程(内核扫设备)

  1. CPU 访问ECAM 地址
  2. 解析出BDF = 01:00.0
  3. Root Port 查BDF 路由表
  4. 桥按 Bus 号逐级转发
  5. 到达设备配置空间
  6. 读 / 写BAR、命令寄存器

② 存储器请求流程(驱动读寄存器)

  1. 驱动访问BAR 虚拟地址
  2. 转为CPU 物理地址
  3. Root Port 查ATU
  4. 翻译成PCIe 总线地址
  5. 直接发到目标设备
  6. 读写设备寄存器

总结

  • ECAM → 触发配置请求
  • BDF 路由表 → 配置请求专用
  • BAR → 分配存储器请求的地址
  • ATU → 存储器请求地址翻译
  • Root Port → 同时管两种请求
  • DMA → 存储器请求反向
  • 配置请求 = 管设备(BDF 路由)
  • 存储器请求 = 用设备(地址 + ATU)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 19:56:04

Yi-Coder-1.5B案例:JavaScript函数自动补全

Yi-Coder-1.5B案例:JavaScript函数自动补全 1. 为什么你需要一个懂JavaScript的本地代码助手 你有没有过这样的时刻:写到一半的函数,突然卡在某个逻辑细节上;调试时反复修改变量名,却忘了更新所有引用;或…

作者头像 李华
网站建设 2026/6/13 13:38:06

零代码体验!EasyAnimateV5-7b-zh-InP在线视频生成教程

零代码体验!EasyAnimateV5-7b-zh-InP在线视频生成教程 想不想亲手把一张静态图片变成一段生动的视频?或者仅仅输入一段文字描述,就能凭空创造出一段动态影像?这听起来像是电影里的特效,但现在,通过EasyAni…

作者头像 李华
网站建设 2026/6/13 23:07:33

DeepSeek-OCR金融场景实战:银行流水识别与数据分析

DeepSeek-OCR金融场景实战:银行流水识别与数据分析 1. 引言:金融文档处理的智能化需求 在金融行业的日常运营中,银行流水处理是一项基础但极其重要的工作。传统的流水识别主要依赖人工录入和简单的OCR技术,存在效率低、错误率高…

作者头像 李华
网站建设 2026/6/12 15:03:51

mPLUG本地化AI助手:为中小企业打造私有化图文理解与问答服务平台

mPLUG本地化AI助手:为中小企业打造私有化图文理解与问答服务平台 1. 为什么中小企业需要自己的图文理解工具? 你有没有遇到过这些场景: 客服团队每天要处理上百张用户上传的商品问题截图,却只能靠人工一张张看图回复&#xff1…

作者头像 李华
网站建设 2026/6/12 19:47:46

YOLO X Layout API调用教程:快速集成到你的项目中

YOLO X Layout API调用教程:快速集成到你的项目中 1. 引言:为什么需要文档布局分析 你有没有遇到过这样的情况?需要从扫描的文档中提取信息,但传统的OCR工具总是识别不准,特别是当文档中有表格、图片、标题混合排版时…

作者头像 李华