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

18 KiB
Raw Blame History

第5章 输入输出系统

📖 本章介绍I/O设备与主机交换信息的三种控制方式:程序查询、中断和DMA。 🎯 重点理解中断处理过程和DMA工作原理


📋 本章目录


5.1 概述

5.1.1 输入输出系统的发展

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 输入输出系统的组成

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指令格式

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设备与主机联系方式

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 工作原理

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 中断处理过程

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地(CPU),DMA方式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的工作过程

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控制器,硬盘直接把数据传到内存不经过CPU,DMA控制器告诉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. DMAI/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)→ DMA(I/O和内存直接传,CPU只管开头和结尾)。

程序查询:CPU不断轮询设备状态,简单但CPU效率最低,适合简单嵌入式系统。

中断处理七步:中断请求 → 中断判优 → 中断响应(关中断)→ 保存现场 → 中断服务 → 恢复现场 → 中断返回(开中断)。

中断优先级:硬件故障 > 软件中断 > I/O中断 > 用户程序。

DMA三大要点:①I/O和内存直接传送,不经过CPU ②CPU只在初始化和结束时参与 ③每个机器周期结束时响应(比中断更快)。

DMA三种工作方式:停止CPU访问(简单但CPU空等)、周期挪用(CPU不访存时DMA传送)、交替访问(效率最高但硬件复杂)。

DMA vs 中断:DMA适合大量数据传送(硬盘),中断适合少量数据(键盘)。DMA在机器周期末响应,中断在指令周期末响应。


🔗 相关链接


本章难度: 中等 重要程度: 重要