首页/计算机组成原理/I/O系统/程序中断方式 🔗 在 Obsidian 中打开
计算机组成原理 · I/O系统

程序中断方式

难度 ★★★重要度 ★★★★★ 考查频率 低题型 选择 / 综合 中断请求中断响应中断处理向量中断中断优先级
速查
CPU 启动设备后继续执行程序,设备就绪发中断请求,CPU 响应后转入 ISR 完成传输。响应发生在每条指令执行完后;中断向量表存的是入口地址。关中断在保存现场之前。

概述

程序中断方式是 CPU 与外设并行工作的重要机制。外设准备好后向 CPU 发中断请求,CPU 暂停当前程序转去处理 I/O,处理完返回继续执行,大大提高 CPU 利用率

中断的基本概念

中断:CPU 执行程序时被内部/外部事件打断,暂停当前程序转去处理,处理完返回原程序。

中断 vs 异常:中断由外部设备引起(异步);异常由 CPU 内部引起(同步),包括故障(Fault,可恢复)、陷阱(Trap,有意如系统调用)、终止(Abort,不可恢复)。

中断的分类

按来源

  • 外部中断(硬件):I/O 设备、时钟、电源故障
  • 内部中断(异常/软中断):除法错误、溢出、缺页、INT 指令

按可否屏蔽

  • 可屏蔽中断:受 IF 控制(IF=1 允许),一般 I/O 中断
  • 不可屏蔽中断(NMI):不受 IF 控制,必须立即响应(掉电、奇偶错)

中断系统的功能

  • 中断请求:设备置请求触发器为 1,保持到被响应
  • 中断判优:硬件(链式判优/独立请求)或软件(程序查询)决定响应谁
  • 中断屏蔽:屏蔽位控制是否响应;屏蔽字可动态改变处理优先级
  • 中断嵌套:高优先级可打断低优先级(需 ISR 中开中断)

中断响应过程

响应条件

  1. 有中断请求
  2. CPU 允许中断(IF=1 或 NMI)
  3. 当前指令执行完毕
  4. 无更高优先级中断正在处理

响应过程

1. 关中断(IF=0)
2. 保存断点(PC、PSW 压栈)
3. 识别中断源(取入口地址)
4. 保存现场(通用寄存器压栈)
5. 转入 ISR(PC ← 入口)
6. 开中断(IF=1,允许嵌套)

中断向量表

中断向量表 = 中断服务程序入口地址表。类型号 0~255 对应各入口。

向量中断:类型号直接指向向量表,硬件自动取入口(快,如 x86)。

非向量中断:类型号指向固定处理程序,再软件查询确定源(较慢)。

x86:类型号 × 4 = 向量表地址(每项 4 字节)

8259A 中断控制器

  • 管理 8 级中断(可级联到 64 级),支持优先级与屏蔽,提供类型号
  • ICW(初始化命令字):ICW1 触发/级联、ICW2 类型号基值、ICW3 级联、ICW4 特殊嵌套
  • OCW(操作命令字):OCW1 屏蔽字、OCW2 结束方式/优先级、OCW3 读状态

中断方式性能分析

CPU 利用率 = 1 - (中断处理时间 × 中断频率)
例:中断频率 1000 次/秒,每次 10μs
CPU 用于中断 = 1000 × 10μs = 10ms
CPU 利用率 = 1 - 10ms/1000ms = 99%
对比程序查询:等待期间 CPU 不能做其他工作;程序中断:设备准备期间 CPU 可执行其他程序,利用率远高于查询。

易错点

必记
  1. CPU 必须在当前指令执行完才响应中断(指令级不可中断)。
  2. 关中断在保存现场之前,防止保存过程被新中断打断。
  3. 中断向量表存储的是入口地址,不是中断服务程序本身。
  4. 8259A 类型号 = ICW2 高 5 位 + IR 编号低 3 位。
  5. EOI(中断结束)命令必须在 ISR 结束时发送。
  6. NMI 不受 IF 标志控制;中断嵌套需 ISR 中开中断。

记忆卡片

响应发生在何时?
每条指令执行完后(指令周期末尾)
关中断为何在保存现场前?
防止保存过程被新中断打断导致断点丢失
向量表存什么?
中断服务程序入口地址(不是程序本身)
NMI 受 IF 控制吗?
不受,必须立即响应(掉电/硬件故障)
中断嵌套条件?
ISR 中开中断 + 正确设置屏蔽字
程序中断 vs 查询?
中断:设备准备期间 CPU 可做其他事;查询:CPU 忙等

交互动画 · 向量中断 vs 非向量中断

手动模式
程序中断方式:外设就绪 → 打断 CPU → 服务 → 返回
点击「播放演示」自动推进,或「下一步」逐步查看中断响应全过程
主程序 ── 外设中断 ── 保存断点 ── 服务 ── 恢复返回(与 interrupt-response-process 卡联动) 主程序 P 外设发中断请求 关中断·保存断点 识别类型·向量表 中断服务程序 恢复现场·开中断 返回主程序 P+1

相关知识点

dma-mode programmed-io io-interface interrupt-response-process

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。