news 2026/8/6 12:10:45

【每日一题】PCIe协议经常谈到的Memory-Mapped I/O究竟是啥?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【每日一题】PCIe协议经常谈到的Memory-Mapped I/O究竟是啥?

昨天有观众看过《一文讲懂主机启动时是如何给每个PCIe外设分配BDF的》发邮件来询问,主机在启动过程中是BIOS给PCIe设备分配MMIO,自己研发的GPU芯片现在会出现MMIO资源分配不足这么一个问题。想问下MMIO的主要功能和工作机制,如何理解MMIO在PCIe设备的作用,或者MMIO扮演一个什么角色? BIOS给PCIe设备分配的MMIO分配到哪里去等一些问题。

下面简单结合你做 GPU 芯片研发的视角来解释一下上面的这些疑问:

一、MMIO 是什么缩写?

MMIO = Memory-Mapped I/O(内存映射输入输出)

意思是: 把设备的寄存器、控制空间等映射到主机 CPU 的物理内存地址空间里,这样 CPU 就能像“访问内存一样访问设备”。


二、MMIO 主要功能是什么?

一句话总结:

让 CPU(或 DRAM 系统)能通过内存地址去访问 PCIe 设备的寄存器、控制器、DMA配置空间等。

MMIO 是设备与 CPU 之间的“命令通道”,“大脑 → 外设”的控制路径。


三、MMIO 在 PCIe 设备中扮演什么角色?通俗比喻

PCIe 设备内部通常有:

  • 控制寄存器(启动 DMA、配置模式)

  • 状态寄存器(告诉 CPU 是否完成某任务)

  • 某些内部 SRAM buffer

  • doorbell queue(通知队列)

  • MSI/MSI-X table

  • BAR 寄存器指向的各种控制空间

这些东西都需要一个方式让 CPU / 操作系统来读写。

MMIO 就是这个方式。

📌比喻:MMIO 就像是在“大楼(CPU 内存空间)”里面给 PCIe 设备开了几间“办公室”(地址空间),CPU 想跟设备交流,就走到那间办公室敲门(读写地址)。

📌无 MMIO = CPU 根本没法操作 PCIe 设备。


四、BIOS 给 PCIe 设备分配 MMIO 是怎么回事?

当主机开机时,BIOS/UEFI 会:

① 扫描所有 PCIe 设备

读取每个设备的 BAR(Base Address Register)寄存器。

每个 BAR 会声明:

这些空间通常包括:

  • Doorbell queue

  • 控制器寄存器

  • 内部 SRAM window

  • MSI-X table

  • GPU 中的 GPC/SM 配置寄存器

  • DMA engine 的寄存器

② BIOS 在 CPU 的物理地址空间中给它们找位置

CPU 实际可用物理地址空间(例如 0~TB)中会有一部分保留给 MMIO。

比如:

BIOS 会从这个区域分配:

这就是你说的“MMIO资源不足”:所有 PCIe 设备的 BAR size 总和超过了系统能提供的 MMIO window 大小。


五、为什么 GPU/大加速器特别容易 MMIO 不够?

因为:

  • GPU 的寄存器空间特别大(上百 MB 甚至更多)

  • 多个 BAR(BAR0、BAR1、BAR2,有时还 64-bit BAR)

  • 大量 doorbell queues、调度器、VM context、DMA 配置寄存器

  • 现代 GPU 的 BAR 空间越来越大(如 AMD 的 64GB BAR 技术)

服务器 PCIe 设备多时,MMIO 要求量瞬间爆炸。


六、MMIO 的工作机制(简单到极致的解释)

假设 GPU BAR0 被分配:

此时:

CPU 执行:

并不是写 DRAM,而是:

DRAM 完全不参与。

MMIO 的本质:

✔ CPU 发出一个写入

✔ RC 将其转成 PCIe Memory Write TLP

✔ 发给设备寄存器


七、MMIO vs DMA(为什么两者是配套关系?)

MMIO 是“控制通道”→ 用来告诉 GPU:“开始 DMA”、“配置队列”、“读取状态”

DMA 是“数据通道”→ 用于搬运大数据,比如 GPU 读写主机内存。

DMA 启动依赖 MMIO,但数据搬运不依赖 MMIO。


八、BIOS 分配的 MMIO 最终“分配到哪里了”?

BIOS 分配的是CPU 物理地址空间中的一段区域

并不是某个 DRAM 地址, 而是 “标记为 MMIO 的地址”。

访问这个区域时:

✔ CPU 认为是访问“内存”

✘ 但不会走 DRAM

✔ Root Complex 会把这些读写转发给 PCIe 设备

这就是“内存映射 I/O”的精髓。


九、为什么会 MMIO 资源不足?

原因包括:

  • 系统 MMIO window 不够(BIOS 或 CPU 硬件限制)

  • 有太多 PCIe 设备

  • GPU BAR 空间大

  • 64-bit BAR 占用巨大

  • Non-prefetchable 与 Prefetchable window 不能混用

  • CXL 设备使 MMIO 紧张

  • BIOS 没做好资源分配


十、GPU 厂商一般怎么解决 MMIO 不够?

常见方法:

1. 减少 BAR size(改 IP 配置)

例如从 16MB 改为 4MB,甚至拆分功能。

2. 使用 BAR virtualization(SR-IOV 等)

3. 让部分配置空间通过 doorbell + indirect access,而不是直接 MMIO

即:

这样 BAR 只需很小。

4. BIOS/MMIO window 增大(主板厂 or 固件)

5. 使用 64-bit BAR 让 BIOS 分配到 4GB 以上高地址


总结

概念通俗解释
MMIO把设备的寄存器映射成“内存地址”,CPU 就能用读写内存的方式控制 PCIe 设备
BIOS 分配 MMIO在 CPU 的物理地址空间里划一块区域给 PCIe 设备作为“控制面板”
MMIO 的作用控制设备、配置 DMA、读状态,是 CPU ↔ PCIe 设备的指挥通道
MMIO资源不足所有 PCIe 设备 BAR 所需的总空间 > CPU/BIOS 提供的 MMIO 地址窗口
实际写 MMIO 不会写进 DRAM会被 Root Complex 转成 TLP 发送给设备寄存器
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 23:52:29

云服务器未来趋势:智能化、自动化与绿色化

随着科技的列车以迅猛之势不断向前飞驰,技术的持续进步和应用场景的日益拓展,云服务器正如同一只振翅高飞的雄鹰,朝着智能化、自动化和绿色化的方向展翅翱翔。这些趋势不仅将如同强劲的引擎,提升云服务器的性能和效率,…

作者头像 李华
网站建设 2026/8/6 3:40:43

5分钟掌握Apollo配置搜索终极技巧:从菜鸟到高手的效率飞跃

5分钟掌握Apollo配置搜索终极技巧:从菜鸟到高手的效率飞跃 【免费下载链接】apollo 项目地址: https://gitcode.com/gh_mirrors/ap/apollo 还在为找不到关键配置而烦恼吗?面对数百个配置项,你是否还在手动滚动屏幕逐个查找&#xff1…

作者头像 李华
网站建设 2026/8/6 2:31:32

SDCAlertView终极指南:打造惊艳iOS对话框的完整解决方案

SDCAlertView终极指南:打造惊艳iOS对话框的完整解决方案 【免费下载链接】SDCAlertView The little alert that could 项目地址: https://gitcode.com/gh_mirrors/sd/SDCAlertView 在iOS应用开发中,一个出色的对话框组件能够显著提升用户体验。今…

作者头像 李华
网站建设 2026/8/5 15:50:55

VibeVoice-1.5B终极指南:90分钟多角色播客一键生成的革命性突破

还在为制作多角色播客而头疼吗?传统TTS技术只能生成10-15分钟的短音频,角色切换时音色漂移严重,让创作过程充满挑战。微软开源的VibeVoice-1.5B文本转语音模型,通过连续语音分词器与扩散生成技术的完美结合,实现了长达…

作者头像 李华
网站建设 2026/8/5 18:50:12

Auto-Subtitle终极指南:5分钟掌握视频字幕自动生成

Auto-Subtitle终极指南:5分钟掌握视频字幕自动生成 【免费下载链接】auto-subtitle Automatically generate and overlay subtitles for any video. 项目地址: https://gitcode.com/gh_mirrors/au/auto-subtitle 在视频内容爆炸式增长的今天,Auto…

作者头像 李华
网站建设 2026/8/5 17:41:39

Wan2.2-T2V-A14B模型能否生成带股票K线动画的投资分析视频?

Wan2.2-T2V-A14B模型能否生成带股票K线动画的投资分析视频? 在智能投研工具快速演进的今天,一个现实问题摆在面前:我们能否仅凭一段文字描述,就让AI自动生成一段包含真实K线走势、技术指标变化和专业讲解画面的投资分析视频&…

作者头像 李华