news 2026/4/16 7:47:29

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/4/13 10:08:49

Shell脚本while read line用法详解:文件处理与循环技巧

在Linux shell脚本编程中,while read line是一个处理文本数据的核心工具。无论是解析日志文件、处理命令输出,还是批量操作数据,掌握这个结构都能显著提升脚本的效率和可读性。它本质上是一个循环结构,逐行读取输入,并…

作者头像 李华
网站建设 2026/4/12 11:37:31

影墨·今颜镜像安全加固:生产环境Docker容器权限隔离与API限流配置

影墨今颜镜像安全加固:生产环境Docker容器权限隔离与API限流配置 1. 引言:为什么需要安全加固 「影墨今颜」作为基于FLUX.1-dev的高端AI影像系统,在生产环境中运行时面临着多重安全挑战。随着用户量的增长和生成请求的增加,系统…

作者头像 李华
网站建设 2026/4/9 17:40:05

DeOldify应用案例:如何用AI为历史照片批量上色?

DeOldify应用案例:如何用AI为历史照片批量上色? 1. 项目背景与价值 历史照片承载着珍贵的记忆,但黑白影像往往让年轻一代难以产生共鸣。传统的手工上色需要专业美术技能,耗时耗力且成本高昂。现在,借助DeOldify这样的…

作者头像 李华
网站建设 2026/4/1 10:30:03

一键生成瑜伽女孩图片:雯雯的后宫-造相Z-Image使用全攻略

一键生成瑜伽女孩图片:雯雯的后宫-造相Z-Image使用全攻略 想为你的社交媒体、瑜伽馆宣传或内容创作快速生成清新、专业的瑜伽女孩图片吗?今天,我将带你快速上手一个名为“雯雯的后宫-造相Z-Image-瑜伽女孩”的AI镜像。这个镜像基于强大的Z-I…

作者头像 李华
网站建设 2026/4/15 7:22:40

快速入门:使用Clawdbot搭建Qwen3-32B代理系统

快速入门:使用Clawdbot搭建Qwen3-32B代理系统 Clawdbot 不是一个简单的模型运行器,而是一套面向开发者的AI代理网关与管理平台。它把底层复杂的模型调度、API适配、会话管理、权限控制等能力封装成直观的界面和标准化接口,让开发者能像搭积木…

作者头像 李华
网站建设 2026/3/21 6:06:05

EasyAnimateV5新手指南:3步完成图片转视频创作

EasyAnimateV5新手指南:3步完成图片转视频创作 你是不是也想过,要是能把一张静态图片变成生动的视频该多好?比如让一张风景照里的云朵飘动起来,或者让一张人物照片里的人眨眨眼、微微笑。以前这需要专业的视频编辑软件和技术&…

作者头像 李华