首页/计算机组成原理/I/O系统/IO端口编址 🔗 在 Obsidian 中打开
计算机组成原理 · I/O系统

IO端口编址

难度 ★★重要度 ★★★★ 考查频率 高题型 选择 统一编址独立编址
速查
统一编址:IO 端口与主存共享地址空间,用访存指令访问(ARM/MIPS);独立编址:IO 端口有独立地址空间,用专用 I/O 指令(x86 的 IN/OUT)。独立编址靠 IO/M 信号区分。

核心概念

IO 端口是 I/O 接口中的寄存器,CPU 通过读写端口与设备通信。常见端口:

  • 数据端口:传输数据
  • 状态端口:读取设备状态
  • 控制端口:发送控制命令

IO 端口的编址方式分两类:统一编址独立编址

统一编址(存储器映射 IO)

IO 端口和主存共享同一个地址空间,被映射为内存地址,用访存指令访问。

地址空间:
0x0000 ~ 0xFFFF:主存
0x10000 ~ 0x100FF:IO 端口(映射到这个地址范围)

优点:不需专门 I/O 指令,可用所有访存指令,编程灵活,硬件简单。

缺点:IO 占用主存地址空间,减少可用内存;访存速度受限于 IO 设备。

代表架构ARM、MIPS、RISC-V。

独立编址(端口映射 IO)

IO 端口有独立的地址空间(与主存分离),用专门的 I/O 指令访问。

地址空间:
主存空间:0x0000 ~ 0xFFFF
IO 空间:  0x00 ~ 0xFF(独立的 IO 地址)

优点:不占用主存地址空间,I/O 指令短、执行快,程序中 IO 操作一目了然。

缺点:需专门 I/O 指令,寻址方式不如访存指令灵活,需额外 IO/M 控制信号。

代表架构x86(IN / OUT 指令)。

CPU 如何区分 IO 和存储器访问?

编址方式区分信号
统一编址由地址范围判断(硬件译码)
独立编址IO/M 信号(高=IO 访问,低=存储器访问)

关键性质对比

比较项统一编址独立编址
地址空间共享独立
访问指令访存指令专用 I/O 指令
地址空间大小IO 占用主存地址不占用主存地址
编程灵活性
硬件复杂度简单需 IO/M 信号
代表架构ARM, MIPSx86

常见考法

考法解题套路
统一 vs 独立统一=共享地址用访存指令;独立=独立空间用 I/O 指令
各自优缺点统一灵活但占地址;独立不占但需专用指令
IO/M 作用独立编址区分 IO 与存储器访问
具体架构$x86=$独立,$ARM/MIPS=$统一
端口种类数据端口、状态端口、控制端口

易错点

必记
  • 统一编址的 IO 端口占用主存地址空间
  • 独立编址需专门 I/O 指令,不能用 MOV 访问
  • IO/M 信号是独立编址才有,统一编址不需要。
  • 统一编址 $\neq$ IO 就是内存,只是共享地址空间。
  • 独立编址中 IO 地址空间与主存地址空间可有相同数值

核心结论

  1. IO 端口编址分统一编址(存储器映射 IO)和独立编址(端口映射 IO)。
  2. 统一编址:共享地址空间,用访存指令访问 IO。
  3. 独立编址:独立地址空间,用专用 I/O 指令访问。
  4. x86 用独立编址(IN/OUT),ARM/MIPS 用统一编址。
  5. 独立编址需要 IO/M 信号区分 IO 与存储器访问。

记忆卡片

统一 vs 独立核心区别?
统一:共享地址空间用访存指令;独立:独立空间用 I/O 指令
x86 用什么编址?
独立编址(IN/OUT 指令)
IO/M 信号作用?
独立编址中区分 IO 访问和存储器访问
统一编址缺点?
IO 占用主存地址空间
独立编址优点?
不占主存地址,I/O 指令短且快
端口有哪几类?
数据端口、状态端口、控制端口

交互动画 · 两种编址的地址空间

地址空间布局(点亮 = IO 端口所在区域) 统一编址 主存 IO 端口(映射于此) 独立编址 主存空间 独立 I/O 空间
选择一种编址方式,查看地址空间布局
点击上方按钮开始
统一编址:IO 端口嵌在主存地址范围内(共享一条空间);独立编址:主存与 IO 各有一条独立地址空间。

★ 演示级:独立编址 vs 统一编址 —— 地址空间布局与访存指令,逐步对比。

统一编址(一条地址空间) 主存 IO 0x0000 ─────────────── 0xFFFF(IO 占用高位一段) MOV R0, [0xFFF0] 独立编址(两条独立空间) 主存空间(地址 0x00000~0xFFFFF) I/O 空间(16 位端口地址) IO/M 信号区分访问对象 IN AL, 35H OUT 35H, AL 对比:IO 是否占主存地址空间 访问指令:访存指令 vs 专用 IN/OUT 典型:ARM / MIPS 用统一编址 x86 用独立编址(IO/M 信号区分)
1 / 8

相关知识点

io-interface programmed-io program-interrupt-mode

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。