Chap5 总线与 I/O 子系统
返回:0500 计算机组成原理总目录 · 上一章:0504 Chap4 存储子系统 · 下一章:0506 Chap6 I/O 设备及其接口
1、学习目标
I/O 子系统解决 CPU、主存和外部设备之间速度、格式、控制方式不一致的问题。总线负责连接,接口负责适配,控制模式负责决定数据如何传送。
| 模块 | 要掌握的内容 |
|---|---|
| I/O 子系统 | 主机与外设的信息交换 |
| 总线 | 数据线、地址线、控制线 |
| 接口 | 数据缓冲、状态、控制、地址译码 |
| PIO | CPU 直接控制传送 |
| 中断 | 外设主动请求 CPU 服务 |
| DMA | 外设和内存直接传送 |
| IOP/PPU | 更独立的 I/O 处理能力 |
2、I/O 子系统概述
外设和主机的差异:
| 差异 | 说明 |
|---|---|
| 速度差异 | 外设通常远慢于 CPU |
| 数据格式差异 | 外设可能是串行、模拟、块设备等 |
| 控制方式差异 | 外设需要状态检测和时序控制 |
| 错误处理 | 外设可能忙、失败、中断、超时 |
接口的作用就是在 CPU/主存和外设之间做缓冲、控制和格式转换。
3、总线
总线是一组共享传输线路。
按功能分:
| 总线 | 作用 |
|---|---|
| 数据总线 | 传输数据 |
| 地址总线 | 指明访问地址 |
| 控制总线 | 传输读写、中断、时钟、仲裁等控制信号 |
按连接范围分:
| 类型 | 说明 |
|---|---|
| 片内总线 | CPU 内部部件连接 |
| 系统总线 | CPU、主存、I/O 模块之间 |
| I/O 总线 | 外设接口连接 |
4、总线性能指标
| 指标 | 含义 |
|---|---|
| 总线宽度 | 一次可传输多少位 |
| 总线频率 | 每秒多少传输周期 |
| 带宽 | 单位时间数据传输量 |
| 延迟 | 一次传输完成时间 |
带宽估算:
1 | 带宽 = 总线宽度 * 传输频率 |
如果采用双倍数据率或突发传输,要把每周期传输次数考虑进去。
5、总线控制
多个设备共享总线时,需要仲裁。
| 仲裁方式 | 特点 |
|---|---|
| 集中式仲裁 | 统一仲裁器决定谁使用总线 |
| 分布式仲裁 | 各设备协同决定 |
| 链式查询 | 简单,但优先级固定 |
| 计数器定时查询 | 优先级可变化 |
| 独立请求 | 响应快,硬件复杂 |
总线通信还要考虑同步方式:
| 方式 | 说明 |
|---|---|
| 同步通信 | 统一时钟控制 |
| 异步通信 | 通过握手信号协调 |
| 半同步 | 同步为主,允许等待 |
6、接口
I/O 接口常包括:
| 组成 | 功能 |
|---|---|
| 数据寄存器 | 缓冲数据 |
| 状态寄存器 | 表示设备是否就绪、忙、出错 |
| 控制寄存器 | 接收 CPU 发来的控制命令 |
| 地址译码 | 识别 CPU 访问的是哪个接口 |
| 中断逻辑 | 产生和屏蔽中断请求 |
CPU 通过 I/O 指令或内存映射方式访问这些寄存器。
7、程序传送模式 PIO
PIO 中 CPU 直接参与数据传送。
流程:
1 | CPU 查询设备状态 |
优点:简单。
缺点:CPU 被大量占用,适合低速或少量数据传送。
8、中断模式
中断允许外设在需要服务时通知 CPU。
流程:
- 外设完成准备,提出中断请求。
- CPU 在合适时机响应中断。
- 保存现场。
- 转入中断服务程序。
- 处理中断。
- 恢复现场,返回原程序。
中断解决了 PIO 一直轮询浪费 CPU 的问题。
关键概念:
| 概念 | 说明 |
|---|---|
| 中断请求 | 外设向 CPU 发出的服务信号 |
| 中断屏蔽 | 暂时禁止某些中断 |
| 中断优先级 | 多个请求同时出现时的响应顺序 |
| 中断向量 | 中断服务程序入口地址 |
| 现场保护 | 保存 PC、状态寄存器、通用寄存器等 |
9、DMA 模式
DMA 让外设和主存直接交换大块数据,CPU 只负责初始化和结束处理。
流程:
- CPU 设置 DMA 控制器:源地址、目的地址、长度、方向。
- DMA 控制器申请总线。
- DMA 在主存和外设之间传送数据。
- 传送完成后用中断通知 CPU。
优点:减少 CPU 参与,适合高速块设备。
DMA 传送方式:
| 方式 | 说明 |
|---|---|
| 停止 CPU 访问 | DMA 独占总线 |
| 周期窃取 | DMA 偶尔占用一个存储周期 |
| 交替访问 | CPU 和 DMA 交替使用总线 |
10、IOP 与 PPU
IOP 或 PPU 可以看作更高级的 I/O 处理单元,能够独立执行 I/O 程序,进一步减轻 CPU 负担。
层次变化:
1 | PIO:CPU 全程搬运 |
越往后,I/O 子系统自主性越强,硬件复杂度也越高。
11、I/O 控制模式对比
| 模式 | CPU 参与程度 | 适合场景 |
|---|---|---|
| PIO 查询 | 高 | 简单低速设备 |
| 中断 | 中 | 异步事件、低中速设备 |
| DMA | 低 | 大块高速数据 |
| IOP/PPU | 更低 | 复杂 I/O 系统 |
复习时可以用一句话记:PIO 让 CPU 等设备,中断让设备叫 CPU,DMA 让设备自己和内存搬数据。
12、易错点
| 易错点 | 修正 |
|---|---|
| 中断和 DMA 混淆 | 中断是通知机制,DMA 是数据传送机制 |
| DMA 完全不需要 CPU | CPU 仍负责初始化和结束处理 |
| PIO 只理解成输入 | PIO 可读也可写 |
| 总线宽度和地址宽度混淆 | 数据总线宽度影响一次传多少,地址线影响寻址范围 |
| 接口当成外设本身 | 接口是主机与外设之间的适配电路 |
13、复盘清单
| 检查项 | 状态 |
|---|---|
| 能区分数据总线、地址总线、控制总线 | 待复盘 |
| 能计算简单总线带宽 | 待复盘 |
| 能说明 I/O 接口寄存器作用 | 待复盘 |
| 能画出中断处理流程 | 待复盘 |
| 能画出 DMA 传送流程 | 待复盘 |
| 能比较 PIO、中断、DMA、IOP | 待复盘 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!







