文章目录
- [I/O 设备](#I/O 设备)
-
- [I/O 系统全景图](#I/O 系统全景图)
-
- [I/O 系统在计算机中的位置](#I/O 系统在计算机中的位置)
- [I/O 系统的核心任务](#I/O 系统的核心任务)
- [I/O 系统的性能瓶颈](#I/O 系统的性能瓶颈)
I/O 设备
输入输出系统 (I/O System)是计算机架构中软硬件深度结合的核心子系统,负责管理和优化 CPU、内存与外围设备间的数据交流。它决定了计算机与外部世界交互的能力边界------从键盘敲击到网络数据包,从磁盘读写到屏幕刷新,所有跨越计算机边界的比特流都经由 I/O 系统完成。
I/O 系统全景图
I/O 系统在计算机中的位置
在冯·诺依曼架构中,I/O 系统与运算器、控制器、存储器并列,构成计算机的五大功能部件。但在现代计算机中,I/O 系统已远远超出"输入输出"的字面含义------它是一个涵盖硬件接口、总线协议、设备控制器、驱动程序、中断机制的完整层次结构。
plain
┌──────────────────────────────────────────┐
│ I/O 系统 │
│ (软硬件协同的完整输入输出子系统) │
└──────────────────┬───────────────────────┘
│
┌──────────────────────────────┼──────────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 外部设备层 │ │ I/O 接口层 │ │ 数据传送控制层 │
│ (Peripherals) │ │ (Interface) │ │ (Control) │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ · 输入设备 │ │ · 数据缓冲寄存器 │ │ · 程序直接控制 │
│ · 输出设备 │ ◄──► │ · 状态/控制寄存器 │ ◄──► │ · 中断控制 │
│ · I/O 设备 │ │ · 地址译码逻辑 │ │ · DMA 控制 │
│ · 通信设备 │ │ · I/O 控制逻辑 │ │ · I/O 通道 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└────────────────────────────┼────────────────────────────┘
│
▼
┌──────────────────────────────────────────┐
│ 总线互连结构 │
│ 系统总线 / I/O 总线 / 局部总线 / 扩展总线 │
└──────────────────────────────────────────┘
I/O 系统的核心任务
| 任务 | 描述 | 关键技术 |
|---|---|---|
| 建立数据传输通道 | 在主存储器与外部设备之间构建高效的数据通路 | 总线、DMA 控制器、I/O 通道 |
| 转化 I/O 请求 | 将用户的 I/O 请求转化为具体的设备控制指令序列 | 设备驱动程序、命令译码 |
| 设备寻址 | 为每个外设分配唯一地址,使 CPU 能准确识别并访问 | I/O 端口编址、地址译码 |
| 数据缓冲与同步 | 解决 CPU/内存与外设之间的速度差异和异步问题 | 缓冲寄存器、双缓冲、缓冲池 |
| 错误检测与恢复 | 检测传输过程中的错误并尝试恢复 | 奇偶校验、CRC、超时重传 |
I/O 系统的性能瓶颈
I/O 系统往往是整个计算机系统的性能瓶颈。以下数据直观展示了这种速度鸿沟:
plain
典型延迟对比(数量级):
CPU 一级缓存访问 ████ ~1 ns
CPU 二级缓存访问 ████████████ ~5 ns
主存 (DRAM) 访问 ████████████████████████████████ ~50-100 ns
SSD 随机读取 ████████████████████████████████████████████████ ~100 µs
机械硬盘随机读取 ████████████████████████████████████████████████████████████████████████ ~10 ms
网络数据包往返 ████████████████████████████████████████████████████████████████████████████████ ~1-100 ms
→ CPU 与最慢 I/O 设备的速度差异可达 10^7 量级(一千万倍)
📌 正因如此巨大的速度鸿沟,I/O 系统的设计核心始终围绕一个目标:让 CPU 在等待 I/O 时不至于完全空闲。从程序查询到中断,再到 DMA 和 I/O 通道,本质上都是在逐步解放 CPU。
