Skip to content

8.4 输入输出信息传送控制方式 (I/O Control Methods)

本章重中之重:这部分内容逻辑性强,考点密集,特别是中断DMA的区别,是历年必考内容。

老师强调:虽然教材可能侧重前三种,但在体系结构中,共有四种方式:程序查询、程序中断、DMA、通道。


1. 程序查询方式 (Program Query / Polling)

基本思想

  • CPU"亲力亲为"。CPU执行一段程序,不断去查询外设的状态(如"忙/闲"标志)
  • 比喻:你每隔几分钟去厨房看水烧开了没有,期间什么都干不了

工作流程

  1. 预置参数(地址、计数值)
  2. 启动外设
  3. 踏步等待 (Busy Waiting):CPU不断循环读取状态寄存器,直到外设"就绪"
  4. 传送数据(一次传一个字/字节)
  5. 修改参数,判断是否传完,未完继续循环

特点

  • 优点:控制简单,硬件成本低(只需简单的状态位)
  • 缺点效率极低。CPU与外设串行工作,CPU资源被大量浪费在查询等待上

2. 程序中断方式 (Program Interrupt) —— 重点

基本思想

  • CPU"主动启动,被动响应"
    • CPU启动外设后,不等待,继续执行原程序
    • 外设准备好后,主动向CPU发中断请求
    • CPU暂停当前程序,转去执行中断服务程序进行数据传输
  • 比喻:你把水壶坐上就去看书,水壶响了(中断请求),你去关火倒水(服务程序),回来继续看书

中断工作流程

2.1 中断请求

  • 外设准备好数据或需要数据时,通过接口向CPU发送中断请求信号
  • 中断请求信号保存在接口的中断请求触发器

2.2 中断响应

  • 响应条件(三个条件缺一不可):
    1. 有中断请求信号
    2. CPU处于开中断状态(允许中断触发器EINT=1)
    3. 一条指令执行完毕(这是程序中断与DMA的重要区别)
  • CPU响应中断后,由硬件自动完成(中断隐指令):
    1. 关中断:防止新的中断打断当前处理
    2. 保存断点:将PC(程序计数器)内容压入堆栈
    3. 引出中断服务程序:获取中断服务程序的入口地址,送入PC

2.3 中断服务程序(软件完成)

中断服务程序通常包括以下步骤:

  1. 保护现场

    • 使用PUSH指令,将通用寄存器(ACC、R0等)和状态寄存器(PSW)的内容压栈
    • 注意:PC已由硬件(隐指令)保存,这里只需保存寄存器
  2. 中断服务

    • 执行具体的数据传输操作
    • 例如:从外设接口的数据端口读取数据,存入主存;或从主存读取数据,写入外设接口
  3. 恢复现场

    • 使用POP指令,恢复通用寄存器和PSW
    • 开中断:允许响应新的中断
    • 中断返回:执行中断返回指令(IRET),将PC从堆栈弹出,回到原程序继续执行

特点

  • 并行性:实现了CPU与外设的部分并行(在外设准备数据期间,CPU可以干别的)
  • 本质:数据传输依然是**依靠软件(指令)**完成的(CPU需要在寄存器和内存间搬运数据)
  • 数据路径:外设 → CPU寄存器 → 主存(或反向),数据必须经过CPU

响应时机

  • 一条指令执行结束
  • 注意:这是程序中断与DMA的重要区别,DMA可以在机器周期结束时响应

中断与子程序调用的区别 —— ⭐⭐⭐⭐⭐ 408选择题高频考点

老师强调:这是408考研选择题的高频考点,必须掌握。

表面上看起来,中断处理过程有点类似于调用子程序的过程(现行程序相当于主程序,中断服务程序相当于子程序),但它们之间却有着本质上的区别

  1. 触发源
    • 子程序的执行是由程序员事先安排好的(由一条调用子程序指令CALL转入),是确定的
    • 中断服务程序的执行则是由随机的中断事件引起的(外设触发),是不确定的
  2. 关系
    • 子程序的执行受到主程序或上层子程序的控制,服务于主程序
    • 中断服务程序一般与被中断的现行程序毫无关系(除了抢占CPU)
  3. 并发性
    • 不存在同时调用多个子程序的情况(只能嵌套或顺序执行)
    • 而有可能发生多个外设同时请求CPU为自己服务的情况(需要中断判优)
  4. 返回方式
    • 子程序返回:RET指令
    • 中断返回:IRET指令(需要恢复PSW)

中断的基本类型(了解即可)

老师说明:这部分概念要求自学,不是课堂推导的重点,但选择题可能会考名词解释。

2.4.1 程序中断 vs 简单中断(DMA)

  • 程序中断
    • 就是我们前面提到的中断方式
    • 主机在响应中断请求后,通过执行一段中断服务程序来处理任务
    • 需要切换程序(保护现场、恢复现场),会破坏现行程序的状态
  • 简单中断(DMA方式):
    • 外设与主存间直接进行信息交换的方法
    • 这种"中断"不去执行中断服务程序,故不破坏现行程序的状态
    • 主机发现有简单中断请求(也就是DMA请求)时,将让出一个或几个存取周期供外设与主存交换信息,然后继续执行程序
    • 考点:程序中断要切换程序(慢);简单中断(DMA)不切换程序(快)

2.4.2 内中断 vs 外中断

  • 内中断(异常/Exception):
    • 由于CPU内部硬件或软件原因引起的中断
    • 例如:除以0、运算溢出、非法操作码、地址越界等
    • 记忆:内中断 = 异常
  • 外中断(Interrupt):
    • CPU以外的部件引起的中断
    • 例如:键盘输入、定时器到期、外设I/O请求等
    • 记忆:外中断 = 狭义的中断

2.4.3 向量中断 vs 非向量中断

  • 向量中断
    • 中断服务程序的入口地址是由中断事件自己提供(硬件直接给入口地址)
    • 响应速度快,硬件实现
    • 注意:这是8.5节"中断隐指令"中"向量地址"概念的基础
  • 非向量中断
    • 中断事件不能直接提供入口地址,需要CPU查询之后才能得到
    • 响应速度较慢,但实现简单

2.4.4 单重中断 vs 多重中断 —— ⭐⭐⭐⭐⭐ 大题基础

老师强调:虽然概念定义略讲,但多重中断(中断嵌套)的逻辑是后面画图大题的基础,必须理解。

  • 单重中断
    • 在CPU执行中断服务程序的过程中不能被再打断("一根筋")
    • 处理简单,但效率较低
  • 多重中断(中断嵌套):
    • 在执行某个中断服务程序的过程中,CPU可去响应级别更高的中断请求("可插队")
    • 需要中断屏蔽技术支持,实现复杂但效率高
    • 关键:这是后面做**"中断屏蔽"大题**的前提,不懂什么是多重中断,就画不出中断嵌套的图

3. DMA方式 (Direct Memory Access) —— 重点、难点

基本思想

  • 外设与主存之间建立"直通车"
    • 脱离CPU:数据传送过程由硬件(DMA控制器)直接控制,不需要CPU执行指令来搬运数据
    • CPU仅在开始前(初始化)和结束后(后处理)参与,中间完全不管

DMA工作原理

3.1 DMA控制器的基本功能

DMA控制器(DMAC)是一个专门的硬件接口,具有以下功能:

  1. 接收外设请求:当外设准备好数据或需要数据时,向DMAC发送DMA请求(DREQ)
  2. 向CPU申请总线:DMAC向CPU发送总线请求(HRQ),请求使用总线
  3. 接管总线控制权:CPU响应后,让出总线控制权,DMAC接管总线
  4. 直接控制数据传送:DMAC发出地址信号、读写控制信号,数据在外设与主存之间直接传送
  5. 传送结束处理:传送完成后,DMAC向CPU发送中断请求,通知CPU进行后处理

3.2 DMA数据传送过程

关键点:数据传送不经过CPU,直接在外设接口主存之间通过数据总线传送。

工作流程

  1. 预处理阶段(CPU控制):

    • CPU执行I/O指令,向DMAC写入:
      • 主存起始地址
      • 传送字数(或字节数)
      • 传送方向(读/写)
    • 启动外设
  2. 数据传送阶段(DMAC控制):

    • 外设准备好一个数据后,向DMAC发DREQ
    • DMAC向CPU发HRQ(总线请求)
    • CPU在当前机器周期结束后,发HLDA(总线响应),让出总线
    • DMAC接管总线,发出:
      • 主存地址(从地址计数器)
      • 读写控制信号(MEMR/MEMW和IOR/IOW)
    • 数据在外设与主存之间直接传送
    • 每传送一个数据,地址计数器+1,字数计数器-1
    • 重复上述过程,直到传送完所有数据
  3. 后处理阶段(CPU控制):

    • 字数计数器减为0时,DMAC向CPU发中断请求
    • CPU执行中断服务程序,检查传送结果,决定是否继续或报错

3.3 DMA与中断方式的本质区别

  • 中断方式:数据传送需要CPU执行指令,数据路径是:外设 → CPU寄存器 → 主存(或反向)
  • DMA方式:数据传送由硬件直接控制,数据路径是:外设 ↔ 主存(不经过CPU)

适用场景

  • 高速批量的数据传输(如磁盘读写、网络数据传输)

响应时机

  • 每个**机器周期(存取周期)**结束时
  • 注意:比中断响应更快,因为不需要保护PC等现场,只是借用总线,不破坏CPU的现场信息

4. 通道控制方式 (Channel Control)

定义

  • 通道是一个具有特殊功能的处理器(小CPU)

特点

  • 有自己的指令(通道指令/通道程序)
  • 可以统一管理多台外设
  • 层级:CPU → 通道 → 控制器 → 设备

与DMA区别

  • DMA只能实现固定的数据传送
  • 通道可以执行复杂的通道程序,具有更强的独立处理能力

⚖️ 核心考点:中断 vs DMA 的区别 (必背表格)

比较维度程序中断方式DMA方式
数据传送控制者软件 (CPU执行中断服务程序)硬件 (DMA控制器)
CPU响应时机指令执行结束机器周期 (存取周期) 结束
CPU干扰程度高 (需要保护现场、恢复现场)低 (仅需让出总线,不破坏CPU现场)
并行程度较好 (准备阶段并行,传送阶段串行)极高 (全程并行)
适用场景中低速外设、处理异常/紧急事件高速外设、成组数据传输
优先级优先级 (因为可以等待)优先级 (高速设备不能等,否则数据丢失)

💡 学习要点

老师特别提示(录音补充)

  • 中断的演变:现代计算机中,中断主要用于处理异常(如掉电、运算溢出)和事件通知,单纯用于大量数据传输(如传1GB文件)已经很少用中断了,都是用DMA
  • 信号流向
    • 外设 DMA请求 DMA控制器 总线请求 CPU
    • (考试陷阱:外设不能直接向CPU发总线请求)

四种方式的对比记忆

效率:程序查询 < 程序中断 < DMA < 通道
复杂度:程序查询 < 程序中断 < DMA < 通道
适用场景:
  - 程序查询:简单设备,对效率要求不高
  - 程序中断:中低速设备,异常处理
  - DMA:高速设备,批量数据传输
  - 通道:多台高速设备,复杂I/O操作

考试重点

  • 必背:中断 vs DMA的对比表格
  • 理解:四种方式的适用场景和优缺点
  • 应用:能够根据题目描述判断应该使用哪种I/O控制方式