中断系统


中断请求

向CPU发出中断请求信号的被称为中断源。
每个中断源对应一个中断请求触发器,有中断请求时置1。中断请求触发器可以分散在各个中断源中,也可以由多个中断请求触发器构成一个中断请求寄存器,每一位对应一个中断源,称为中断字或中断码。

中断判优

如果有多个中断源同时发出中断请求,CPU需要根据中断优先级进行中断判优

  • 软件判优:按照优先级从大到小逐个检查中断请求寄存器的各位状态。
  • 硬件判优

中断响应

CPU能够响应中断的条件:

  1. 收到中断请求信号
  2. CPU允许中断(处于开中断)
  3. 一条指令执行完毕

中断隐指令

中断隐指令是由硬件直接实现的一系列操作,而不是真正的指令。
响应中断后,需要进行中断隐指令:

  1. 保存断点:将原程序的PC的内容保存起来,恢复后可以继续执行下一条指令。
  2. 引出中断服务程序:取出中断服务程序的入口地址存入程序计数器(PC)。
  3. 关中断:防止保护现场时被新的中断打断。

中断处理

  1. 保护现场:通过软件将通用寄存器的内容保存起来。
  2. 判断中断源
  3. 开中断:中断嵌套和多重中断的情况下,需要在执行中断服务程序开中断。
  4. 执行中断服务程序:处理中断
  5. 关中断:防止恢复现场被新的中断打断。
  6. 恢复现场:通过软件恢复通用寄存器的内容。
  7. 开中断:恢复允许响应中断。

中断返回

执行中断返回指令,硬件恢复断点,返回原程序。

中断全过程


  1. 中断请求:外设发出请求
  2. 中断判优:选择优先级最高的中断
  3. 中断响应:需要满足中断响应的条件
  4. 中断隐指令
    1. 保存断点
    2. 关中断
    3. 引出中断服务程序
  5. 中断处理
    1. 保护现场
    2. 判断中断源
    3. 开中断
    4. 执行中断服务程序
    5. 关中断
    6. 恢复现场
    7. 开中断
  6. 中断返回