7.2 程序查询方式与程序中断方式

程序查询方式的流程与特点;中断的基本概念,中断请求标记与中断判优,中断响应的条件与中断隐指令,中断向量;单重中断与多重中断的处理过程,中断屏蔽字与处理优先级;CPU 时间占用率的计算。

考查要求 ★★★ 重点掌握 程序查询(忙等)中断响应的条件中断隐指令中断向量地址单重/多重中断的处理流程屏蔽字与处理优先级CPU 时间占用率

程序查询方式

程序查询方式的信息交换完全由 CPU 执行程序实现:CPU 不断读取 I/O 接口中的状态寄存器,查询设备是否已做好准备,就绪后才传送数据。

是否是否预置传送参数主存地址、传送字数向接口发出命令字,启动设备读取接口的状态字设备就绪?传送一个数据修改地址和计数传送完?结束
程序查询方式的流程
  • 特点:接口设计简单、设备量少;但 CPU 在查询过程中要反复读状态、等待设备(称为「踏步」或忙等),CPU 与外设串行工作,而且一段时间内只能和一台外设交换信息,效率很低。
  • 独占查询:CPU 一直在查询,100% 的时间都花在这台设备上;定时查询:在保证数据不丢失的前提下,每隔一段时间查询一次,间隔内 CPU 可以执行其他程序。

程序中断方式

中断的基本概念

程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU 暂时中止现行程序,转去对这些情况或请求进行处理,处理完毕后再自动返回到现行程序的断点处继续执行。

中断方式的意义在于:外设在准备数据时,CPU 可以执行其他程序,实现了 CPU 与外设的并行工作;此外还能处理硬件故障和软件错误、实现人机交互、实现多道程序和分时操作、实时处理,以及在用户程序与操作系统之间切换(软中断)。

中断请求标记与中断判优

  • 中断请求标记:每个中断源发出请求的时间是随机的。中断系统为每个中断源设置一个中断请求标记触发器,为 1 表示该中断源有请求,这些触发器组成中断请求标记寄存器。
  • 中断判优:多个中断源同时提出请求时,按中断响应优先级选择一个响应。判优可以用硬件实现(硬件排队器),也可以用软件实现(查询程序的查询顺序)。

一般来说:不可屏蔽中断 > 内部异常 > 可屏蔽中断;DMA 请求 > I/O 设备的中断请求;高速设备 > 低速设备,输入设备 > 输出设备,实时设备 > 普通设备。

中断响应

CPU 响应中断必须满足三个条件:

  1. 中断源有中断请求;
  2. CPU 允许中断,即处于开中断状态(中断允许触发器 IF = 1;异常和不可屏蔽中断不受此限制);
  3. 一条指令执行完毕,且没有更紧迫的任务(如 DMA 请求)。

响应中断后,CPU 进入中断周期,由硬件自动完成中断隐指令的操作:

  1. 关中断:保护断点和现场期间不被新的中断打断;
  2. 保存断点:把 PC 的内容(以及 PSW)保存到栈或特定寄存器中;
  3. 引出中断服务程序:识别中断源,把中断服务程序的入口地址送入 PC。

「中断隐指令」并不是指令系统中的一条真正的指令,而是硬件在中断周期自动完成的一系列操作。

中断处理过程

中断服务程序的主要任务是保护现场(保存通用寄存器等,由软件完成)、设备服务(完成数据传送等)、恢复现场,最后执行中断返回指令。单重中断与多重中断的区别在于何时开中断:

单重中断多重中断中断隐指令(硬件)关中断、保存断点、引出服务程序保护现场设备服务恢复现场开中断中断返回中断隐指令(硬件)关中断、保存断点、引出服务程序保护现场和屏蔽字开中断设备服务关中断恢复现场和屏蔽字开中断中断返回
单重中断(左)与多重中断(右)的处理过程
  • 单重中断:执行中断服务程序时不响应新的中断,直到恢复现场后才开中断。
  • 多重中断(中断嵌套):在保护现场和屏蔽字之后就开中断,允许优先级更高的中断打断当前服务程序;恢复现场前要先关中断,防止恢复过程被打断;最后再开中断、返回。

实现多重中断的条件:① 在中断服务程序中提前设置开中断指令;② 优先级高的中断源有权中断优先级低的中断源。

中断屏蔽与处理优先级

每个中断源对应一个屏蔽触发器(1 表示屏蔽,0 表示开放),所有屏蔽触发器组成屏蔽字寄存器,其内容称为屏蔽字。CPU 执行某个中断源的服务程序时,屏蔽字寄存器中放的就是该中断源对应的屏蔽字。

  • 中断响应优先级由硬件排队线路决定,不能改变;中断处理优先级由屏蔽字决定,可以通过改写屏蔽字来改变。
  • 屏蔽字的设置规律:每个中断源的屏蔽字中,处理优先级不高于自己的中断源(包括自己)都置 1;屏蔽字中 1 越多,处理优先级越高;每个屏蔽字至少有一个 1(至少要屏蔽自身)。

下面的演示中,A、B、C、D 四个中断源的硬件响应优先级为 A > B > C > D。切换处理优先级,观察 CPU 执行轨迹和中断完成次序的变化:

动画演示多重中断与中断屏蔽:CPU 的执行轨迹
A 服务程序B 服务程序C 服务程序D 服务程序用户程序0102030405060708090t / μsBCAD
屏蔽字(1 = 屏蔽)
服务程序ABCD
A1110
B0100
C0110
D1111
响应优先级(硬件排队):A > B > C > D
处理优先级:D > A > C > B
断点栈:用户
1/13CPU 执行用户程序。中断请求:t = 5 时 B、C 同时请求,t = 10 时 A 请求,t = 20 时 D 请求;每个中断服务程序需 20 μs
例题:中断方式下的时间计算(2018 年真题改编)

假定 CPU 主频为 50 MHz,CPI 为 4。设备 D 采用异步串行通信方式向主机传送 7 位 ASCII 字符,通信规程中有 1 位奇校验位和 1 位停止位,从 D 接收启动命令到字符送入 I/O 端口需要 0.5 ms。D 采用中断方式:I/O 端口每收到一个字符申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,其中第 15 条指令启动 D 工作。若 CPU 需从 D 读取 1000 个字符,完成这一任务大约需要多少个时钟周期?CPU 用于这一任务的时间大约是多少个时钟周期?

查看解答
  • 每个字符在串行线上传输 1(起始位)+ 7 + 1 + 1 = 10 位;D 每秒最多送入 1 / 0.5 ms = 2000 个字符。
  • 0.5 ms = 0.5 ms × 50 MHz = 25 000 个时钟周期。每个字符:D 工作 25 000 个周期后发出中断,CPU 响应中断(10 个周期)并执行服务程序的前 15 条指令(15 × 4 = 60 个周期)后再次启动 D;服务程序剩下的 5 条指令与 D 的工作并行。
  • 完成任务所需时间 ≈ 1000 × (25 000 + 10 + 60) ≈ 2.5 × 10⁷ 个时钟周期。
  • CPU 用于该任务的时间 ≈ 1000 × (10 + 20 × 4) = 9 × 10⁴ 个时钟周期。
  • 中断响应阶段 CPU 执行中断隐指令:关中断、保存断点和程序状态、识别中断源并把服务程序入口地址送入 PC。

即时练习

即时练习6 题
点击选项即可作答
  1. 1
    单级中断系统中,中断服务程序内的执行顺序是( )。
    Ⅰ. 保护现场 Ⅱ. 开中断 Ⅲ. 关中断 Ⅳ. 保存断点 Ⅴ. 中断事件处理 Ⅵ. 恢复现场 Ⅶ. 中断返回
  2. 2
    某计算机有五级中断 L4~L0,中断屏蔽字为 M4M3M2M1M0,Mi = 1(0 ≤ i ≤ 4)表示对 Li 级中断进行屏蔽。若中断响应优先级从高到低的顺序是 L4 → L0 → L2 → L1 → L3,则 L1 的中断处理程序中设置的中断屏蔽字是( )。
  3. 3
    某计算机处理器主频为 50 MHz,采用定时查询方式控制设备 A 的 I/O,查询程序运行一次所用的时钟周期数至少为 500。在设备 A 工作期间,为保证数据不丢失,每秒需对其查询至少 200 次,则 CPU 用于设备 A 的 I/O 的时间占整个 CPU 时间的百分比至少是( )。
  4. 4
    某设备以中断方式与 CPU 进行数据交换,CPU 主频为 1 GHz,设备接口中的数据缓冲寄存器为 32 位,设备的数据传输率为 50 kB/s。若每次中断开销(包括中断响应和中断处理)为 1000 个时钟周期,则 CPU 用于该设备输入/输出的时间占整个 CPU 时间的百分比最多是( )。
  5. 5
    下列关于外部 I/O 中断的叙述中,正确的是( )。
  6. 6
    下列关于多重中断系统的叙述中,错误的是( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。