IO 端口是 I/O 接口中的寄存器,CPU 通过读写端口与设备通信。常见端口:
IO 端口的编址方式分两类:统一编址与独立编址。
IO 端口和主存共享同一个地址空间,被映射为内存地址,用访存指令访问。
地址空间:
0x0000 ~ 0xFFFF:主存
0x10000 ~ 0x100FF:IO 端口(映射到这个地址范围)
优点:不需专门 I/O 指令,可用所有访存指令,编程灵活,硬件简单。
缺点:IO 占用主存地址空间,减少可用内存;访存速度受限于 IO 设备。
IO 端口有独立的地址空间(与主存分离),用专门的 I/O 指令访问。
地址空间:
主存空间:0x0000 ~ 0xFFFF
IO 空间: 0x00 ~ 0xFF(独立的 IO 地址)
优点:不占用主存地址空间,I/O 指令短、执行快,程序中 IO 操作一目了然。
缺点:需专门 I/O 指令,寻址方式不如访存指令灵活,需额外 IO/M 控制信号。
| 编址方式 | 区分信号 |
|---|---|
| 统一编址 | 由地址范围判断(硬件译码) |
| 独立编址 | IO/M 信号(高=IO 访问,低=存储器访问) |
| 比较项 | 统一编址 | 独立编址 |
|---|---|---|
| 地址空间 | 共享 | 独立 |
| 访问指令 | 访存指令 | 专用 I/O 指令 |
| 地址空间大小 | IO 占用主存地址 | 不占用主存地址 |
| 编程灵活性 | 高 | 低 |
| 硬件复杂度 | 简单 | 需 IO/M 信号 |
| 代表架构 | ARM, MIPS | x86 |
| 考法 | 解题套路 |
|---|---|
| 统一 vs 独立 | 统一=共享地址用访存指令;独立=独立空间用 I/O 指令 |
| 各自优缺点 | 统一灵活但占地址;独立不占但需专用指令 |
| IO/M 作用 | 独立编址区分 IO 与存储器访问 |
| 具体架构 | $x86=$独立,$ARM/MIPS=$统一 |
| 端口种类 | 数据端口、状态端口、控制端口 |
★ 演示级:独立编址 vs 统一编址 —— 地址空间布局与访存指令,逐步对比。
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。