I/O 系统
I/O系统基本概念、程序查询/中断/DMA方式、I/O接口与设备
1. I/O 系统概述
I/O系统是计算机系统中负责与外部设备进行信息交换的系统,包括I/O设备、I/O接口和I/O控制软件。
1.1 I/O设备的分类
| 分类方式 | 类型 | 举例 |
|---|---|---|
| 按功能 | 输入设备 | 键盘、鼠标、扫描仪、触摸屏 |
| 输出设备 | 显示器、打印机、绘图仪 | |
| 输入输出兼用 | 磁盘、光盘、网络适配器 | |
| 按速度 | 低速设备 | 键盘、鼠标(每秒几个字节) |
| 中速设备 | 打印机、扫描仪(每秒几千字节) | |
| 高速设备 | 磁盘、网卡(每秒兆字节以上) |
2. I/O 接口
I/O接口(I/O控制器)是主机和外设之间的连接部件,负责实现主机和外设之间的信息交换控制。
2.1 I/O接口的基本结构
CPU
主机侧
数据总线
I/O 接口
数据端口 / 状态端口 / 控制端口
外设接口
I/O 设备
外设侧
2.2 I/O端口及其编址
- 数据端口:存放要传输的数据,可以读/写
- 状态端口:存放设备的状态信息,只能读
- 控制端口:存放CPU发出的控制命令,只能写
统一编址(存储器映射)
I/O端口和存储器地址统一编址,I/O端口占用部分存储器地址空间。
优点:访问I/O和访存指令一样,指令丰富
缺点:占用内存地址空间,译码稍复杂
独立编址(I/O映射)
I/O端口有独立的地址空间,使用专门的IN/OUT指令访问。
优点:不占用内存空间,地址译码简单
缺点:I/O指令少,功能单一
3. I/O 控制方式
I/O控制方式决定了CPU和外设之间数据传输的控制方式,共发展出四种基本方式。
程序查询方式
CPU不断查询设备状态,就绪才传送数据。CPU和外设串行工作。
CPU效率最低
程序中断方式
CPU启动外设后继续执行程序,外设就绪后发中断请求CPU。
CPU效率中等
DMA方式
DMA控制器直接控制总线在内存和外设间传送数据,CPU只需预处理。
CPU效率最高
第四种:通道方式
通道是具有特殊功能的处理器,专门负责I/O管理。进一步提高CPU效率,常见于大型机系统。
4. 程序中断方式
中断是指CPU在执行程序的过程中,遇到异常情况或特殊请求时,暂停当前程序,转去处理这些事件,处理完毕后返回原程序继续执行。
4.1 中断处理流程动画演示
点击播放,观看一次完整的中断处理过程。
中断处理完整流程
① 中断请求
I/O设备准备就绪,向CPU发送中断请求信号INT
② 中断判优
若同时有多个中断,按优先级选择最高优先级的中断请求
③ 中断响应
CPU在每条指令执行结束时检测中断,发中断响应信号INTA,关中断,保护断点
④ 中断向量(硬件)
硬件提供中断向量,找到中断服务程序入口地址,装入PC
⑤ 保护现场(软件)
中断服务程序开头,将寄存器内容压入堆栈保护
⑥ 中断服务(核心)
执行中断服务程序的主体,完成I/O操作等具体功能
⑦ 恢复现场(软件)
中断服务程序末尾,从堆栈中恢复寄存器内容
⑧ 中断返回
执行中断返回指令IRET,恢复PC和PSW,开中断
等待开始
硬件操作 vs 软件操作:中断请求、判优、响应、向量是硬件完成的;保护现场、中断服务、恢复现场是软件(中断服务程序)完成的。中断返回由IRET指令完成。
4.2 中断向量表
中断向量表是存放中断服务程序入口地址的表格,位于内存的固定区域。中断向量号是中断向量表的索引。
中断向量表示例(80x86)
000H~003H
中断 0:除法错误
004H~007H
中断 1:单步调试
014H~017H
中断 5:打印屏幕
020H~023H
中断 8:时钟中断
024H~027H
中断 9:键盘中断
028H~02BH
中断 10:VGA视频
... ...
更多中断向量...
4.3 多重中断与中断屏蔽
- 单重中断:执行中断服务程序时不能被新的中断打断
- 多重中断(中断嵌套):处理中断时可以响应更高优先级的中断
- 中断屏蔽:通过设置中断屏蔽字,可以有选择地禁止某些中断
开中断与关中断
CPU响应中断后会自动关中断,以保护断点。若要支持多重中断,需要在中断服务程序中用开中断指令(STI)重新打开中断。
5. DMA 方式
直接存储器存取(DMA)方式是指在DMA控制器的控制下,数据直接在主存和外设之间传送,不需要CPU干预。
5.1 DMA工作过程演示
DMA 数据传送过程
CPU
DMA控制器
DMAC
主存储器
I/O设备
就绪
DMA传送三阶段:预处理(CPU向DMAC发送参数)→ 数据传送(DMAC控制总线,传送数据)→ 后处理(传送结束,DMAC发中断,CPU处理)
5.2 DMA与中断方式对比
⚡ 中断方式
- 靠程序(中断服务程序)传送数据
- CPU参与数据传送过程
- 传送过程需要保护/恢复现场
- 只能在指令周期结束时响应
- 适合低速设备
- 可处理复杂事件
🚀 DMA方式
- 靠硬件(DMA控制器)传送数据
- CPU不参与数据传送
- 只需挪用几个总线周期
- 可在每个总线周期结束时响应
- 适合高速设备大批量数据
- 功能相对简单
5.3 DMA的传送方式
| 方式 | 原理 | 特点 |
|---|---|---|
| 停止CPU访问 | DMA期间CPU暂停访存 | 简单,但CPU利用率低 |
| 周期挪用(周期窃取) | DMA挪用一个或几个总线周期 | 最常用,兼顾效率与公平 |
| DMA与CPU交替访存 | 将总线周期分成两段,各用一段 | 效率高,但需要CPU配合 |
易混点
DMA传送前的预处理和传送后的后处理,都是由CPU完成的;只有中间的数据传送阶段,才由DMA控制器控制完成。