Files
obsidian/计算机组成原理/学习笔记/05_输入输出系统_补充版.md

442 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第5章 输入输出系统
> 📖 本章介绍I/O设备与主机交换信息的三种控制方式程序查询、中断和DMA。
> 🎯 重点理解中断处理过程和DMA工作原理
---
## 📋 本章目录
- [[#5.1 概述]]
- [[#5.2 I/O设备]]
- [[#5.3 接口]]
- [[#5.4 程序查询方式]]
- [[#5.5 程序中断方式]]
- [[#5.6 DMA方式]]
- [[#本章小结]]
- [[#例题与解析]]
---
## 5.1 概述
### 5.1.1 输入输出系统的发展
```mermaid
graph LR
A[早期阶段] --> B[接口模块阶段]
B --> C[DMA阶段]
C --> D[通道阶段]
D --> E[IO处理机阶段]
style A fill:#ff9999
style B fill:#ffcc99
style C fill:#ffff99
style D fill:#99ff99
style E fill:#99ccff
```
| 阶段 | 特点 | CPU参与度 |
|------|------|----------|
| 早期阶段 | IO设备直接连CPU串行工作 | 完全参与 |
| 接口模块阶段 | 通过接口连接,可并行工作 | 部分参与 |
| DMA阶段 | IO与主存直接通路CPU不参与数据传输 | 少量参与 |
| 通道阶段 | 通道独立管理IO | 不参与 |
| IO处理机阶段 | IO处理机独立工作 | 不参与 |
I/O系统的发展可以理解为物流系统的进化早期阶段CPU亲自搬运所有货物效率低下接口模块阶段有了快递员接口CPU可以做其他事情DMA阶段有了直达通道I/O设备和内存之间直接传送数据通道阶段有了物流中心通道独立管理I/O处理机阶段有了独立物流公司完全独立工作。
### 5.1.2 输入输出系统的组成
```mermaid
graph TB
A[输入输出系统] --> B[I/O软件]
A --> C[I/O硬件]
B --> B1[I/O指令]
B --> B2[通道指令]
B --> B3[管理程序]
C --> C1[I/O接口]
C --> C2[I/O设备]
```
#### I/O指令格式
```mermaid
graph LR
subgraph "I/O指令格式"
OP[操作码] --> CMD[命令码] --> DEV[设备码]
end
```
**命令码功能**
- 数据输入IO → CPU
- 数据输出CPU → IO
- 状态测试(查询设备状态)
- 形成操作命令
I/O指令就像快递单操作码告诉CPU要做什么操作读数据、写数据、查询状态命令码告诉I/O设备要做什么设备码告诉CPU是哪个I/O设备打印机、硬盘、键盘
---
## 5.2 I/O设备
### 5.2.1 I/O设备分类
| 类型 | 设备 | 特点 |
|------|------|------|
| 输入设备 | 键盘、鼠标、扫描仪 | 人 → 机 |
| 输出设备 | 显示器、打印机 | 机 → 人 |
| 外存储器 | 磁盘、磁带、光盘 | 存储信息 |
输入设备像人的感官(键盘像手,鼠标像手,扫描仪像眼睛),接收外界信息传给计算机;输出设备像表达器官(显示器像眼睛,打印机像手),把计算机的信息传给人;外存储器像记忆器官(磁盘像大脑,磁带像笔记本),存储信息长期保存。
### 5.2.2 I/O设备与主机联系方式
```mermaid
graph TB
subgraph "联系方式"
A[I/O设备] --> B[编址方式]
B --> B1[统一编址]
B --> B2[独立编址]
A --> C[联络方式]
C --> C1[立即响应]
C --> C2[异步联络]
C --> C3[同步联络]
end
```
#### 编址方式
| 方式 | 特点 | 优点 | 缺点 |
|------|------|------|------|
| **统一编址** | I/O设备和内存使用同一地址空间 | 指令统一,编程简单 | 占用内存地址 |
| **独立编址** | I/O设备和内存使用不同地址空间 | 不占用内存地址 | 指令不同,编程复杂 |
统一编址就像办公室和仓库使用同一套门牌号,找办公室和仓库都用同一套门牌号简单,但仓库占用了办公室的门牌号;独立编址就像办公室和仓库使用不同的门牌号系统,仓库不占用办公室的门牌号,但找办公室和仓库要用不同的门牌号系统复杂。
#### 联络方式
| 方式 | 特点 | 适用场景 |
|------|------|----------|
| **立即响应** | 设备立即响应CPU请求 | 简单设备 |
| **异步联络** | 使用握手信号,速度灵活 | 大多数设备 |
| **同步联络** | 使用统一时钟,速度固定 | 高速设备 |
立即响应就像你问一个问题对方立即回答,只能用于简单设备;异步联络像你问一个问题对方准备好后回答,速度灵活适合大多数设备;同步联络像所有设备按同一时钟工作,速度快但受限于最慢设备。
---
## 5.3 接口
### 5.3.1 I/O接口的功能
**主要功能**
1. **设备选择**选择是哪个I/O设备
2. **数据缓冲**:缓冲数据,解决速度不匹配
3. **数据格式转换**:串行/并行转换
4. **控制命令传递**传递CPU的控制命令
5. **状态反馈**:反馈设备状态
I/O接口就像快递站设备选择告诉快递站是哪个包裹数据缓冲暂时存放包裹解决速度不匹配数据格式转换把包裹转换成适合运输的形式控制命令传递传递发货人的命令状态反馈反馈包裹的状态。
### 5.3.2 I/O接口的类型
| 类型 | 特点 | 应用 |
|------|------|------|
| **并行接口** | 多位数据同时传输 | 打印机接口 |
| **串行接口** | 一位一位传输 | USB、网络 |
| **专用接口** | 为特定设备设计 | 显卡接口 |
并行接口像8个人同时送8封信速度快但成本高距离短串行接口像一个人送8封信分8次送成本低距离长但速度慢专用接口专门为某种设备设计性能好兼容性好但只能用于特定设备。
---
## 5.4 程序查询方式
### 5.4.1 工作原理
```mermaid
graph TB
A[CPU启动设备] --> B[CPU查询设备状态]
B --> C{设备准备好?}
C -->|否| B
C -->|是| D[CPU传输数据]
D --> E[操作完成]
```
**工作流程**
1. CPU启动I/O设备
2. CPU不断查询设备状态
3. 设备准备好后CPU传输数据
4. 操作完成
程序查询方式就像你等公交车你到公交站等车CPU启动设备不断看公交站牌看车来了没有查询设备状态公交车来了设备准备好你上车CPU传输数据到达目的地操作完成
**特点**
- **优点**:简单,容易实现
- **缺点**CPU要不断查询效率低
早期计算机和简单嵌入式系统常用这种方式CPU要等打印机打印完才能做其他事情。
---
## 5.5 程序中断方式
### 5.5.1 中断的基本概念
> [!info] 定义
> 中断是指CPU暂时中止当前程序转去处理某个紧急事件处理完后返回原程序继续执行。
中断就像你正在工作时有人敲门你正在工作CPU执行程序有人按门铃I/O设备请求服务你暂停工作CPU暂停当前程序去开门CPU处理中断请求回来继续工作CPU返回原程序继续执行
### 5.5.2 中断的分类
| 分类方式 | 类型 | 特点 |
|----------|------|------|
| **产生原因** | 硬件中断、软件中断 | 硬件中断由设备产生,软件中断由程序产生 |
| **是否可屏蔽** | 可屏蔽中断、不可屏蔽中断 | 可屏蔽中断可以被禁止,不可屏蔽中断不能 |
| **优先级** | 高优先级、低优先级 | 高优先级中断可以打断低优先级中断 |
硬件中断像有人按门铃,由硬件设备产生;软件中断像你自己决定要开门,由程序产生。可屏蔽中断像你可以选择不开门,某些不重要的中断可以被禁止;不可屏蔽中断像你必须开门,电源故障、硬件错误不能被禁止。
### 5.5.3 中断处理过程
```mermaid
graph TB
A[中断请求] --> B[中断判优]
B --> C[中断响应]
C --> D[保存现场]
D --> E[中断服务]
E --> F[恢复现场]
F --> G[中断返回]
```
**详细流程**
1. **中断请求**I/O设备向CPU发送中断请求信号CPU在每条指令执行完后检查中断请求
2. **中断判优**:如果有多个中断请求,需要判优,优先级高的中断先处理
3. **中断响应**CPU响应中断请求关中断防止新的中断打断
4. **保存现场**保存当前程序的状态PC、寄存器等以便中断返回后继续执行
5. **中断服务**执行中断服务程序处理I/O设备的请求
6. **恢复现场**:恢复之前保存的状态,准备返回原程序
7. **中断返回**:返回原程序继续执行,开中断允许新的中断
这就像你正在工作时有人敲门:有人按门铃(中断请求),如果有多个人按门铃决定先开哪个门(中断判优),你决定去开门(中断响应),把正在做的工作记下来(保存现场),去开门处理事情(中断服务),回来看看之前做到哪里了(恢复现场),继续之前的工作(中断返回)。
当你按键盘时键盘向CPU发送中断请求如果有其他中断键盘中断可能优先级较低CPU响应键盘中断保存当前程序的状态执行键盘中断服务程序处理按键恢复之前保存的状态返回原程序继续执行。
### 5.5.4 中断判优方法
| 方法 | 特点 | 优点 | 缺点 |
|------|------|------|------|
| **软件查询** | CPU用程序查询哪个设备请求中断 | 简单,灵活 | 速度慢 |
| **硬件判优** | 用硬件电路判优 | 速度快 | 复杂,成本高 |
软件查询像你挨个问"是你按门铃吗?",简单容易实现但速度慢;硬件判优像有一个专门的设备告诉你谁按了门铃,速度快立即知道是谁但需要额外设备成本高。
### 5.5.5 中断优先级
**设置原则**
1. **硬件故障中断**:最高优先级
2. **软件中断**:较高优先级
3. **I/O中断**:中等优先级
4. **用户程序中断**:较低优先级
硬件故障中断像火灾报警最紧急软件中断像重要电话比较紧急I/O中断像门铃响了一般紧急用户程序中断像有人找你聊天不紧急。
### 5.5.6 中断屏蔽
**原理**:通过设置中断屏蔽字,可以禁止某些中断。
中断屏蔽就像你设置了"请勿打扰"设置了门铃响了你也不去开门不设置门铃响了你就去开门。CPU正在处理重要任务时屏蔽某些中断CPU空闲时允许所有中断。
---
## 5.6 DMA方式
### 5.6.1 DMA的基本概念
> [!info] 定义
> DMADirect Memory Access是指I/O设备和内存之间直接传送数据不经过CPU。
DMA就像直达快递传统方式你要从A地寄东西到B地必须经过C地CPUDMA方式A地直接寄到B地不经过C地。硬盘读取数据时直接把数据传到内存不经过CPU。
### 5.6.2 DMA的工作方式
| 方式 | 特点 | 优点 | 缺点 |
|------|------|------|------|
| **停止CPU访问** | DMA传送时CPU停止访问内存 | 简单 | CPU效率低 |
| **周期挪用** | DMA在CPU不访问内存时传送 | CPU效率高 | 控制复杂 |
| **交替访问** | DMA和CPU交替访问内存 | 效率最高 | 硬件复杂 |
停止CPU访问像高速公路完全给DMA使用CPU不能使用简单但CPU效率低周期挪用像DMA在CPU不使用高速公路时使用CPU效率高但需要复杂的控制逻辑交替访问像DMA和CPU轮流使用高速公路效率最高但硬件复杂成本高。
### 5.6.3 DMA的工作过程
```mermaid
graph TB
A[CPU初始化DMA] --> B[DMA请求]
B --> C[DMA响应]
C --> C1[DMA接管总线]
C1 --> D[数据传送]
D --> E[传送完成]
E --> F[DMA释放总线]
F --> G[CPU继续工作]
```
**详细流程**
1. **CPU初始化DMA**CPU设置DMA控制器的参数包括内存起始地址、传送字节数、传送方向
2. **DMA请求**I/O设备向DMA控制器发送请求DMA控制器向CPU发送总线请求
3. **DMA响应**CPU响应总线请求DMA控制器接管总线
4. **数据传送**DMA控制器控制数据传送I/O设备和内存直接传送数据
5. **传送完成**DMA控制器传送完成向CPU发送中断请求
6. **DMA释放总线**DMA控制器释放总线CPU继续工作
这就像你让快递员帮你寄东西你告诉快递员要寄什么东西寄到哪里CPU初始化DMA快递员去取东西DMA请求快递员拿到东西DMA响应快递员把东西送到目的地数据传送快递员告诉你东西送到了传送完成快递员去忙其他事情DMA释放总线
当你从硬盘复制文件到内存时CPU告诉DMA控制器要从硬盘读取多少数据到内存哪里DMA控制器向CPU请求总线使用权CPU把总线使用权给DMA控制器硬盘直接把数据传到内存不经过CPUDMA控制器告诉CPU传送完成了DMA控制器释放总线CPU继续工作。
### 5.6.4 DMA与中断的区别
| 特性 | DMA | 中断 |
|------|-----|------|
| **数据传送** | I/O和内存直接传送 | 通过CPU传送 |
| **CPU参与度** | 只在开始和结束参与 | 全程参与 |
| **响应时间** | 每个机器周期结束响应 | 每条指令结束响应 |
| **适用场景** | 大量数据传送 | 少量数据传送 |
DMA像直达快递东西直接从A地寄到B地不经过C地速度快C地可以做其他事情但需要额外的快递员中断像普通快递东西从A地寄到C地再从C地寄到B地简单不需要额外快递员但速度慢C地要全程参与。
硬盘读取大量数据到内存用DMA键盘按键、鼠标点击用中断。
---
## 📝 本章小结
### 核心概念
1. **I/O系统发展**从CPU完全参与到完全不参与
2. **I/O设备**:输入设备、输出设备、外存储器
3. **I/O接口**:设备选择、数据缓冲、格式转换
4. **程序查询**CPU不断查询效率低
5. **程序中断**CPU响应中断效率较高
6. **DMA**I/O和内存直接传送效率最高
### 关键术语
| 术语 | 英文 | 含义 |
|------|------|------|
| I/O | Input/Output | 输入输出 |
| DMA | Direct Memory Access | 直接内存访问 |
| Interrupt | Interrupt | 中断 |
| Interface | Interface | 接口 |
### 重点图示
> [!summary] 必须掌握的图
> 1. I/O系统发展过程图
> 2. 中断处理过程图
> 3. DMA工作过程图
> 4. 三种I/O方式的比较
---
## 🧪 例题与解析
### 例题1中断处理过程
**题目**:简述中断处理的完整过程。
**答案**
中断处理的完整过程中断请求I/O设备向CPU发送中断请求信号中断判优如果有多个中断请求决定先处理哪个中断响应CPU响应中断请求关中断保存现场保存当前程序的状态中断服务执行中断服务程序恢复现场恢复之前保存的状态中断返回返回原程序继续执行开中断
这就像你正在工作时有人敲门:有人按门铃,如果有多个人按门铃决定先开哪个门,你决定去开门,把正在做的工作记下来,去开门处理事情,回来看看之前做到哪里了,继续之前的工作。
### 例题2DMA与中断比较
**题目**比较DMA和中断两种I/O方式的区别。
**答案**
DMA是I/O和内存直接传送CPU只在开始和结束参与每个机器周期结束响应适合大量数据传送中断是通过CPU传送CPU全程参与每条指令结束响应适合少量数据传送。
DMA像直达快递东西直接从A地寄到B地不经过C地速度快C地可以做其他事情但需要额外的快递员中断像普通快递东西从A地寄到C地再从C地寄到B地简单不需要额外快递员但速度慢C地要全程参与。
### 例题3程序查询方式
**题目**:简述程序查询方式的工作原理和优缺点。
**答案**
工作原理CPU启动I/O设备不断查询设备状态设备准备好后CPU传输数据操作完成。优点是简单容易实现不需要额外硬件缺点是CPU效率低要不断查询不能同时处理多个设备。
这就像你等公交车:你到公交站等车,不断看公交站牌看车来了没有,公交车来了你上车,到达目的地。简单但你不能做其他事情效率低。
### 例题4中断优先级
**题目**:简述中断优先级的设置原则。
**答案**
硬件故障中断最高优先级火灾报警最紧急软件中断较高优先级重要电话比较紧急I/O中断中等优先级门铃响了一般紧急用户程序中断较低优先级有人找你聊天不紧急
### 例题5DMA工作过程
**题目**简述DMA的完整工作过程。
**答案**
DMA的完整工作过程CPU初始化DMA设置参数DMA请求I/O设备向DMA控制器发送请求DMA响应CPU响应总线请求DMA控制器接管总线数据传送I/O设备和内存直接传送数据传送完成向CPU发送中断请求DMA释放总线CPU继续工作
这就像你让快递员帮你寄东西:你告诉快递员要寄什么东西寄到哪里,快递员去取东西,快递员拿到东西,快递员把东西送到目的地,快递员告诉你东西送到了,快递员去忙其他事情。
---
## ⚡ 知识点速记卡
> 考前快速过一遍30秒回忆整章核心
**三种I/O方式**CPU参与度从高到低程序查询CPU一直等→ 程序中断设备准备好通知CPU→ DMAI/O和内存直接传CPU只管开头和结尾
**程序查询**CPU不断轮询设备状态简单但CPU效率最低适合简单嵌入式系统。
**中断处理七步**:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。
**中断优先级**:硬件故障 > 软件中断 > I/O中断 > 用户程序。
**DMA三大要点**①I/O和内存直接传送不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。
**DMA三种工作方式**停止CPU访问简单但CPU空等、周期挪用CPU不访存时DMA传送、交替访问效率最高但硬件复杂
**DMA vs 中断**DMA适合大量数据传送硬盘中断适合少量数据键盘。DMA在机器周期末响应中断在指令周期末响应。
---
## 🔗 相关链接
- [[00_计算机组成原理学习指南]] - 返回主目录
- [[04_存储器]] - 上一章
- [[06_运算方法]] - 下一章
- [[08_CPU结构与功能]] - CPU相关内容
---
*本章难度:⭐⭐⭐⭐ 中等*
*重要程度:⭐⭐⭐⭐ 重要*