news 2026/4/15 16:53:30

计算机组成原理(26) 第六章 - iO方式2-程序中断方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机组成原理(26) 第六章 - iO方式2-程序中断方式

程序中断方式是一种由外设主动触发的 I/O 控制方式,核心逻辑是:外设准备好数据后,主动向 CPU 发送中断请求,CPU 暂停当前任务,转而执行专门的中断服务程序完成数据传输,传输结束后恢复原任务

一、 核心原理与关键前提

1. 核心思想

CPU 与外设的交互遵循“主动工作 + 被动响应”模式:

  1. CPU 发送启动命令后,继续执行自身的主程序,无需等待外设;
  2. 外设完成数据准备后,主动向 CPU 发送中断请求信号
  3. CPU 收到请求后,在当前指令执行完毕时暂停主程序,保存现场(寄存器值、程序计数器 PC);
  4. CPU 跳转到中断服务程序(ISR),执行数据读写操作;
  5. 中断服务程序执行完毕,CPU 恢复现场,继续执行主程序。

2. 关键硬件前提

程序中断方式需要专门的硬件支持,核心组件包括:

硬件组件作用
中断请求线外设向 CPU 发送中断请求的物理信号线(如 x86 的 INTR 引脚)
中断控制器管理多个外设的中断请求,进行优先级判断(如 Intel 8259 中断控制器),避免多个中断同时冲突
中断向量表存储不同外设中断服务程序的入口地址,CPU 可通过中断向量号直接跳转,无需逐个查询
外设状态 / 数据寄存器与程序查询方式一致,状态寄存器标记外设就绪状态,数据寄存器暂存传输数据

3. 关键概念

  • 中断源:触发中断的设备或事件(如键盘输入、串口数据到达、定时器溢出);
  • 中断向量号:每个中断源的唯一编号,CPU 通过该编号在中断向量表中找到服务程序入口;
  • 中断屏蔽:CPU 通过中断屏蔽寄存器,可暂时屏蔽某一类或某一个中断请求,优先执行更重要的任务;
  • 中断优先级:多个中断同时请求时,CPU 优先响应优先级高的中断(如 DMA 中断 > 外设中断 > 时钟中断)。

二、 完整工作流程(以 CPU 读外设数据为例)

程序中断方式的流程分为5 个核心步骤,核心是 “外设主动触发,CPU 被动响应”:

  1. 初始化阶段
    CPU 执行指令,初始化外设(如启动键盘扫描、配置串口波特率),同时初始化中断控制器:

    • 开启外设对应的中断允许位;
    • 设置中断优先级;
    • 映射中断向量号到服务程序入口地址。完成后,CPU 继续执行主程序。
  2. 外设准备数据并触发中断
    外设完成数据准备(如键盘检测到按键按下、ADC 完成采样)后:

    • 将数据写入数据寄存器
    • 置位状态寄存器的就绪位
    • 向中断控制器发送中断请求信号(IRQ)
  3. CPU 响应中断
    中断控制器收到请求后,进行两步处理:

    • 优先级判断:若当前无更高优先级中断正在处理,则向 CPU 发送中断请求信号(INTR)
    • CPU 响应条件:
      1. CPU 内部的中断允许标志位(IF)为 1(未屏蔽全局中断);
      2. CPU 执行完当前指令,无更紧急任务(如复位、异常)。满足条件后,CPU 进入中断响应阶段。
  4. 执行中断服务程序(核心数据传输阶段)
    CPU 响应中断后,按固定流程执行:

    1. 关中断:暂时屏蔽其他中断,避免现场被破坏;
    2. 保存现场:将当前程序计数器 PC、寄存器值等压入栈中,确保后续能恢复主程序;
    3. 查找中断服务程序:根据中断控制器发送的中断向量号,在中断向量表中找到服务程序入口地址;
    4. 执行数据传输:读取外设数据寄存器中的数据,存入内存或寄存器;清除外设的就绪位和中断请求位;
    5. 开中断:重新允许其他中断请求;
    6. 恢复现场:将栈中保存的寄存器值、PC 值恢复;
    7. 中断返回:执行IRET(中断返回指令),回到主程序的中断断点处继续执行。
  5. 外设继续工作数据传输完成后,外设可继续准备下一批数据,等待下一次触发中断。

三、 优缺点分析

1. 优点

优点具体说明
CPU 利用率大幅提升CPU 无需主动轮询,可在等待外设时执行主程序,仅在数据就绪时短暂响应中断
实时性较好外设就绪后立即触发中断,CPU 能快速响应,适合需要及时处理的场景(如工业传感器数据采集)
硬件复杂度适中仅需中断控制器,无需 DMA 控制器等复杂硬件,成本低于 DMA 方式
支持多外设并行中断控制器可管理多个外设的中断请求,CPU 可按优先级依次响应,适合多外设系统

2. 缺点

缺点具体说明
存在中断开销每次中断都需要 “保存现场 → 查找入口 → 恢复现场”,这些操作会占用 CPU 时间
传输效率有限每次中断仅能传输一个数据单元(字节 / 字),若需传输大批量数据(如硬盘读写),会产生频繁中断,反而降低 CPU 利用率
依赖中断控制器必须配备中断控制器管理优先级和请求,硬件复杂度高于程序查询方式
可能出现中断嵌套冲突高优先级中断可打断低优先级中断,若嵌套层数过多,可能导致栈溢出或现场混乱

四、 适用场景

程序中断方式适用于中低速外设、小批量数据传输、对实时性有一定要求的场景,典型案例包括:

  1. 人机交互外设:键盘、鼠标、触摸屏,单次传输 1 个字节数据,需及时响应;
  2. 低速通信外设:UART 串口、I2C 传感器,数据传输频率低,无需占用 CPU 大量时间;
  3. 实时监控场景:工业控制中的温度、压力传感器,需及时上报数据,避免数据丢失。

反例:不适合高速、大批量数据传输场景(如 NVMe 硬盘读写、视频流采集),这类场景更适合 DMA 方式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 12:49:39

YOLOv8智能瞄准系统:3步构建游戏AI辅助平台

YOLOv8智能瞄准系统:3步构建游戏AI辅助平台 【免费下载链接】RookieAI_yolov8 基于yolov8实现的AI自瞄项目 项目地址: https://gitcode.com/gh_mirrors/ro/RookieAI_yolov8 在游戏竞技领域,基于YOLOv8深度学习算法的智能瞄准系统正掀起技术革命。…

作者头像 李华
网站建设 2026/4/15 0:52:19

如何高效编写技术文档:从用户痛点出发的实战指南

如何高效编写技术文档:从用户痛点出发的实战指南 【免费下载链接】cubefs CubiFS 是一个开源的分布式文件系统,用于数据存储和管理,支持多种数据存储模型和云原生环境。 * 分布式文件系统、数据存储和管理 * 有什么特点:支持多种数…

作者头像 李华
网站建设 2026/4/10 12:02:30

Keil5编译器5.06下载兼容性设置深度剖析

Keil5 编译器 5.06 安装踩坑实录:如何在 Win10/Win11 上稳稳跑起来? 你有没有遇到过这种情况——项目紧急,刚换新电脑,兴冲冲地去官网下载 Keil MDK,结果安装完打开 μVision,却弹出一句刺眼的提示&#x…

作者头像 李华
网站建设 2026/4/15 14:24:14

ArduinoJson技术深度解析:嵌入式JSON处理的高效实现方案

ArduinoJson技术深度解析:嵌入式JSON处理的高效实现方案 【免费下载链接】ArduinoJson 📟 JSON library for Arduino and embedded C. Simple and efficient. 项目地址: https://gitcode.com/gh_mirrors/ar/ArduinoJson 嵌入式系统JSON处理的核心…

作者头像 李华
网站建设 2026/4/15 14:24:05

B站视频下载神器:BBDown_GUI让资源获取变得如此简单

B站视频下载神器:BBDown_GUI让资源获取变得如此简单 【免费下载链接】BBDown_GUI BBDown的图形化版本 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown_GUI 还在为无法保存喜欢的B站视频而烦恼吗?想要随时随地欣赏那些精彩的UP主内容却苦于没…

作者头像 李华
网站建设 2026/4/15 14:24:06

CCTSDB2021:17856张图像构建的交通标志检测终极解决方案

CCTSDB2021:17856张图像构建的交通标志检测终极解决方案 【免费下载链接】CCTSDB2021 项目地址: https://gitcode.com/gh_mirrors/cc/CCTSDB2021 在自动驾驶技术快速发展的今天,交通标志检测作为关键感知环节面临着严峻挑战。传统数据集因规模不…

作者头像 李华