这一章的核心在于解决高速的CPU/内存与低速的外部设备之间如何进行高效、协调的数据交换。
理论知识
为了帮你更好地掌握这一章,我为你整理了以下核心知识体系:
1. I/O系统的组成与基本概念
I/O系统由硬件 和软件两部分组成。
- 硬件:包括I/O设备(键盘、磁盘等)、I/O接口(连接主机与外设的电路)、总线等。
- 软件:包括I/O指令、驱动程序、中断处理程序等。
核心矛盾:主机(CPU+内存)工作速度快,外设工作速度慢,且外设种类繁多、格式各异。I/O系统的任务就是解决这些差异,实现协调工作。
2. I/O设备与主机的联系方式
这是理解I/O的基础,主要涉及编址、传送和联络方式。
I/O编址方式
CPU如何访问I/O设备中的寄存器(端口)?主要有两种方式:
| 编址方式 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 统一编址 (存储器映射I/O) | 将I/O端口看作内存地址的一部分,使用访存指令(如LOAD/STORE)访问。 | 指令集简单,无需专用I/O指令,编程灵活。 | 占用内存地址空间,I/O操作速度可能受限。 |
| 不统一编址 (独立编址) | I/O端口地址与内存地址独立,需使用专用I/O指令(如IN/OUT)。 | 不占用内存空间,I/O操作清晰。 | 需要专用指令,编程稍繁琐。 |
联络方式 (定时方式)
解决速度不匹配的问题:
- 立即响应:适用于极简单的设备(如开关),CPU发出指令外设立即执行。
- 同步传送:CPU与外设共用时钟,速度匹配。
- 异步传送(应答式):最常用。采用"请求-应答"握手信号(如READY/BUSY),允许外设按自己的速度工作。
3. I/O数据传送的控制方式 (核心考点)
这是本章的重中之重,描述了CPU如何控制数据传输,经历了从低效到高效的四个发展阶段:
(1) 程序查询方式 (Polling)
- 原理:CPU不断轮询外设状态("你准备好了吗?"),直到外设就绪才传送数据。
- 特点 :串行工作。CPU在查询和等待期间无法做其他事,效率极低("踏步等待")。
(2) 程序中断方式 (Interrupt)
- 原理 :CPU启动外设后继续执行原程序。当外设准备好后,主动向CPU发送中断请求。CPU暂停当前程序,保存现场,转去执行中断服务程序处理数据,处理完后返回。
- 特点 :并行工作(CPU与外设)。消除了"踏步等待",提高了CPU利用率。但每次传输数据(通常是一个字)都需要中断,频繁的中断处理(保存/恢复现场)会消耗CPU时间,适合少量数据传输。
(3) 直接存储器访问方式 (DMA)
- 原理 :引入DMA控制器 。数据传输时,DMA向CPU申请总线控制权(周期挪用),接管总线,直接在内存和外设之间搬运数据块。仅在传输开始和结束时通过中断通知CPU。
- 特点 :块传输。CPU仅在开始和结束时参与,中间数据搬运完全由DMA独立完成。适合高速、大批量数据传输(如磁盘读写)。
(4) 通道方式 (Channel)
- 原理:通道是一个专门负责I/O的处理器(有自己的指令集)。CPU只需发出一条I/O指令启动通道,通道即可独立执行通道程序,管理多个设备与内存的数据交换。
- 特点 :高度并行。实现了CPU、通道、外设三者的并行工作,进一步减轻了CPU负担,适用于大型机。
4. I/O接口
接口是主机和外设之间的"翻译官"和"缓冲器"。
- 主要功能 :
- 数据缓冲:解决速度差异(设置数据缓冲寄存器)。
- 格式变换:如串行/并行转换。
- 电平转换:匹配TTL电平与外设电平。
- 状态反馈:提供"忙"、"就绪"等状态信息。
- 设备选择:通过译码电路选中特定设备。
5. 总结与对比
| 控制方式 | CPU干预程度 | 数据传送单位 | 适用场景 |
|---|---|---|---|
| 程序查询 | 全程干预,串行 | 字/字节 | 简单、低速设备 |
| 中断驱动 | 传输过程干预 (每次) | 字/字节 | 随机、少量数据 |
| DMA | 仅开始/结束干预 | 数据块 | 高速、大数据量 (磁盘) |
| 通道 | 极少干预 (指令级) | 成组数据 | 大型系统、多设备并发 |
希望这份汇总与习题能帮你理清的输入/输出(I/O)系统脉络!如果有关于具体协议或计算(如波特率)的问题,欢迎继续提问。