Skip to content

408 > ### 计算机组成原理 > #### CO-05-04 异常与中断


一、定位信息

项目内容
所属章节第5章 中央处理器
知识单元编号CO-05-04
主题异常与中断
考纲要求理解异常和中断的概念、分类及处理过程
历年考查频率中高频(选择题为主)
预计分值2-4分(选择)/ 6-10分(综合)

二、知识点讲解

1. 基本概念

异常(Exception):也称为内中断或同步中断,是由CPU内部事件引起的中断。异常的发生与当前执行的指令直接相关,在相同的程序状态下必定会重复出现,因此是"同步"的。

中断(Interrupt):也称为外中断或异步中断,是由CPU外部事件引起的中断。中断的发生与当前执行的指令无关,是随机的、不可预测的,因此是"异步"的。

对比维度异常(内中断/同步中断)中断(外中断/异步中断)
来源CPU内部(指令执行过程中)CPU外部(I/O设备、定时器等)
与指令关系与当前指令直接相关与当前指令无关
发生时机指令执行期间任意时刻
可重复性相同条件下必定重复随机发生
典型例子除零错误、缺页、溢出键盘输入、定时器、I/O完成
检测方式在指令执行过程中检测在指令执行完毕后检查

2. 异常的分类

异常按其性质和处理方式可分为以下几类:

(1)故障(Fault)

  • 由错误条件引起,但有可能被修复
  • CPU保存的返回地址是引起故障的指令的地址(即重新执行该指令)
  • 典型例子:缺页异常(Page Fault)、段错误、除零错误(部分实现)
  • 处理完异常后,可能重新执行引起故障的指令

(2)自陷(Trap)

  • 也称陷入或陷阱,是有意安排的异常
  • 由特殊指令(如系统调用指令syscall、断点指令INT 3)主动触发
  • CPU保存的返回地址是引起自陷的指令的下一条指令地址
  • 处理完后,从下一条指令继续执行
  • 典型例子:系统调用、调试断点

(3)终止(Abort)

  • 由不可恢复的严重错误引起
  • CPU保存的返回地址不确定
  • 程序无法继续执行,通常终止进程
  • 典型例子:硬件故障、非法指令、存储器校验错误

3. 中断的分类

(1)可屏蔽中断

  • 通过中断屏蔽标志位可以暂时禁止响应的中断
  • 优先级通常较低
  • 典型例子:I/O设备完成数据传输的中断
  • CPU可以通过关中断指令(CLI)暂时不响应

(2)不可屏蔽中断(NMI)

  • 无法被屏蔽,CPU必须立即响应
  • 用于紧急事件处理
  • 典型例子:电源掉电、硬件严重故障

4. 中断响应过程

CPU响应中断需要满足两个条件:

  1. 中断源有中断请求(有中断事件发生)
  2. CPU允许响应中断(中断允许标志IF=1,即CPU处于开中断状态)

中断响应的完整过程:

第一步:关中断 CPU在响应中断后,首先将中断允许标志IF清零(关中断),防止在中断处理过程中被新的中断打断。这保证了中断现场保存的完整性。

第二步:保存断点 将当前程序计数器PC的值(即被中断指令的地址)和程序状态字PSW压入堆栈保存。这是为了中断处理完毕后能够正确返回原程序继续执行。

第三步:识别中断源 如果有多个中断源同时请求,需要通过中断判优逻辑(硬件排队器或软件查询)确定优先级最高的中断源。

第四步:保护现场 将中断处理程序可能用到的寄存器内容(如通用寄存器、状态寄存器等)压入堆栈保存。

第五步:执行中断服务程序 根据中断向量号找到中断服务程序的入口地址,开始执行中断服务程序。

第六步:恢复现场 中断服务程序执行完毕后,从堆栈中恢复之前保存的寄存器内容。

第七步:开中断并返回 将中断允许标志IF置1(开中断),执行中断返回指令(如IRET),从堆栈中弹出PC和PSW,返回原程序继续执行。

5. 中断判优

当多个中断源同时请求时,需要确定响应优先级。常用方法:

(1)硬件排队器(优先级编码器)

  • 速度快,每个中断源有固定的硬件优先级
  • 优先级最高的中断源被首先响应

(2)软件查询法

  • 按查询顺序确定优先级(先查询的优先级高)
  • 灵活但速度慢

(3)中断控制器(如8259A)

  • 可编程设置优先级
  • 支持中断嵌套(高优先级中断可以打断低优先级中断的处理)

6. 中断向量与中断向量表

中断向量:中断服务程序的入口地址。

中断向量表:所有中断向量组成的表,存放在内存的固定区域。CPU根据中断类型号(向量号)在中断向量表中查找对应的中断服务程序入口地址。

以x86架构为例:

  • 中断向量表位于内存地址0x00000-0x003FF
  • 每个中断向量占4字节(2字节段地址+2字节偏移地址)
  • 共256个中断向量(向量号0-255)

7. 中断嵌套

中断嵌套是指在处理一个中断的过程中,允许更高优先级的中断打断当前中断处理,转去处理更高优先级的中断。

中断嵌套的条件

  1. 在保护好当前中断的现场后,需要开中断(设置IF=1)
  2. 新中断的优先级高于当前中断的优先级

中断嵌套的执行流程: 程序A执行 → 中断1到来 → 保存A现场 → 执行中断1服务程序 → 中断2(更高优先级)到来 → 保存中断1现场 → 执行中断2服务程序 → 恢复中断1现场 → 继续中断1 → 恢复A现场 → 继续程序A


三、记忆辅助

  1. "内同外异":异常是内中断(同步),中断是外中断(异步)。异常与当前指令相关(同步),中断与当前指令无关(异步)。

  2. "故障重执行,自陷下一条,终止不可回":Fault保存引起故障的指令地址(可重执行),Trap保存下条指令地址(从下条继续),Abort无法恢复(终止程序)。

  3. 中断响应七步口诀:"关断识保,执恢开"——关中断、保存断点、识别中断源、保护现场、执行中断服务程序、恢复现场、开中断返回。

  4. 中断向量表位置记忆:x86中中断向量表在内存最低地址处(0x000-0x3FF),256个入口,每个4字节。记忆:"向量表在最前面,256口4字节。"


四、例题精解

例题1

题目:在中断系统中,CPU响应中断后首先进行的操作是( )。 A. 保护现场 B. 关中断 C. 保存断点 D. 执行中断服务程序

四步解题

第一步:审题——考查中断响应的第一步操作。

第二步:分析——CPU响应中断后的标准流程是:①关中断 → ②保存断点 → ③识别中断源 → ④保护现场 → ⑤执行中断服务程序 → ⑥恢复现场 → ⑦开中断返回。

第三步:验证——关中断必须在最前面,因为如果不先关中断,在保存断点和现场的过程中可能被新的中断打断,导致现场保存不完整。所以第一步是关中断

第四步:答案——选 B


例题2

题目:下列关于异常和中断的叙述中,正确的是( )。 A. 缺页异常属于中断 B. 自陷(Trap)的返回地址是引起自陷的指令地址 C. 中断响应时需要保存断点,断点是指令寄存器IR的内容 D. 可屏蔽中断可以通过设置中断屏蔽字来禁止响应

四步解题

第一步:审题——考查异常与中断的基本概念。

第二步:分析

  • A:缺页是在指令执行过程中检测到的,与当前指令直接相关,属于异常(内中断),不是外中断。A错误。
  • B:自陷是主动触发的,保存的返回地址是引起自陷的指令的下一条指令地址,而非引起自陷的指令本身。B错误。
  • C:断点是被中断程序的PC值(下条要执行的指令地址),不是IR的内容。IR存放的是当前指令的内容。C错误。
  • D:可屏蔽中断可以通过中断允许标志IF或中断屏蔽字来禁止响应。D正确。

第三步:验证——D的描述完全正确,可屏蔽中断的特征就是可以被屏蔽。

第四步:答案——选 D


例题3

题目:某系统有4个中断源I1、I2、I3、I4,优先级从高到低为I1>I2>I3>I4。若采用中断屏蔽技术,当处理I2中断时,为了允许I1可以打断I2的处理但不允许I3和I4打断,中断屏蔽字应设置为( )。(设屏蔽字中1表示屏蔽,0表示开放)

四步解题

第一步:审题——需要设置中断屏蔽字,使得I1可以打断I2(I1不被屏蔽),I3和I4不能打断I2(I3、I4被屏蔽)。

第二步:分析——屏蔽字通常从高优先级到低优先级排列为I1I2I3I4:

  • I1:允许响应(开放)→ 0
  • I2:自身正在处理 → 1(或0,取决于具体实现,通常自身也屏蔽)
  • I3:不允许打断 → 1
  • I4:不允许打断 → 1

第三步:计算——屏蔽字 = 0111(I1开放,I2/I3/I4屏蔽)。注意I2本身通常也被屏蔽(防止自己打断自己),所以I2位为1。

第四步:答案——中断屏蔽字设置为 0111


五、考情分析

维度说明
考查题型选择题为主(概念辨析+中断流程)
考查重点异常与中断的分类区别、中断响应流程、中断屏蔽字设置
命题趋势近年倾向于将异常/中断与流水线异常处理结合考查
分值预估选择题2-4分
复习建议理解异常与中断的本质区别,熟记中断响应流程,掌握中断屏蔽字的计算

六、易错点

  1. "断点"保存的是PC值,不是IR值:断点是被中断后需要返回继续执行的地址,即PC的值。IR中存放的是当前指令的内容,不是地址。很多考生会混淆这两个概念。

  2. 故障(Fault)和自陷(Trap)的返回地址不同:Fault保存引起故障的指令地址(以便重新执行),Trap保存下一条指令地址(从下条继续)。这是最容易混淆的点。典型例子:缺页是Fault(重新执行该指令),系统调用是Trap(从下条指令继续)。

  3. 关中断必须在保存断点之前:如果不先关中断,在保存断点的过程中可能被新中断打断,导致断点保存不完整。所以标准流程是先关中断再保存断点。

  4. 可屏蔽中断与不可屏蔽中断的区别:可屏蔽中断可以通过IF标志位控制是否响应;不可屏蔽中断(NMI)不受IF标志影响,CPU必须响应。电源掉电是典型的NMI。

  5. 中断判优 ≠ 中断嵌套:中断判优解决的是"同时有多个中断请求时先响应谁"的问题;中断嵌套解决的是"正在处理一个中断时能否被另一个中断打断"的问题。两者相关但不相同。


七、来源标注

来源说明
主要教材唐朔飞《计算机组成原理》第3版,第5章5.5节
辅助教材袁春风《计算机组成与系统结构》第3版
考纲依据全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408)
补充参考Patterson & Hennessy《计算机组成与设计》第4章

考研全科复习资料 - 基于2026考研统考大纲