中断系统
中断请求
向CPU发出中断请求信号的被称为中断源。
每个中断源对应一个中断请求触发器,有中断请求时置1。中断请求触发器可以分散在各个中断源中,也可以由多个中断请求触发器构成一个中断请求寄存器,每一位对应一个中断源,称为中断字或中断码。
中断判优
如果有多个中断源同时发出中断请求,CPU需要根据中断优先级进行中断判优:
- 软件判优:按照优先级从大到小逐个检查中断请求寄存器的各位状态。
- 硬件判优:
中断响应
CPU能够响应中断的条件:
- 收到中断请求信号
- CPU允许中断(处于开中断)
- 一条指令执行完毕
中断隐指令
中断隐指令是由硬件直接实现的一系列操作,而不是真正的指令。
响应中断后,需要进行中断隐指令:
- 保存断点:将原程序的PC的内容保存起来,恢复后可以继续执行下一条指令。
- 引出中断服务程序:取出中断服务程序的入口地址存入程序计数器(PC)。
- 关中断:防止保护现场时被新的中断打断。
中断处理
- 保护现场:通过软件将通用寄存器的内容保存起来。
- 判断中断源:
- 开中断:中断嵌套和多重中断的情况下,需要在执行中断服务程序开中断。
- 执行中断服务程序:处理中断
- 关中断:防止恢复现场被新的中断打断。
- 恢复现场:通过软件恢复通用寄存器的内容。
- 开中断:恢复允许响应中断。
中断返回
执行中断返回指令,硬件恢复断点,返回原程序。
中断全过程
- 中断请求:外设发出请求
- 中断判优:选择优先级最高的中断
- 中断响应:需要满足中断响应的条件
- 中断隐指令:
- 保存断点
- 关中断
- 引出中断服务程序
- 中断处理:
- 保护现场
- 判断中断源
- 开中断
- 执行中断服务程序
- 关中断
- 恢复现场
- 开中断
- 中断返回