1、中断的相关属性
- 中断所属特权模式(M模式 > S模式 > U模式)
- 中断等级:决定是否能够抢占当前的中断
- 中断优先级:影响中断的仲裁,优先级高时优先被响应
- 中断编号:区分中断,影响中断的仲裁
2、中断仲裁:同时发生多个中断
- 首先比较中断所属特权模式,高特权模式的中断比低特权模式的中断先响应
- 特权特权模式相同再比较中断等级,高中断等级的中断比低中断等级的中断先响应
- 中断等级相同再比较中断优先级,高中断优先级的中断比低中断优先级的中断先响应
- 中断优先级相同再比较中断编号,中断编号较大的中断先响应
3、中断晚到
- 中断晚到:当处理器对某一中断的响应还在早期,即入栈阶段,此时收到了高优先级中断的请求
- 普通处理流程:
- 先处理完当前中断,然后在处理高优先级的中断
- 中断处理逻辑简单,但是实时性不高
- 中断抢占:
- 如果晚到的高优先级中断十分紧急,则安装中断抢占策略处理
- 系统实时性高,但是中断处理逻辑负责
- 中断咬尾:
- 如果晚到的中断不算很紧急,不足以打断当前中断的处理,但是可以在本次进入中断后,把晚到的中断一起处理
- 节省了保护现场、恢复现场的步骤,提供中断处理效率
4、中断抢占
4.1、中断抢占概念介绍
- 中断抢占的条件
- 高特权模式的中断可以抢占低特权模式的中断,不管低特权模式的全局中断是否使能
- 同特权模式的中断,高中断等级的中断要抢占低特权等级的中断,前提是特权模式的全局中断必须要使能
- 中断抢占:
- 前一个中断还在执行时发生了更高等级的中断,立马去执行高等级的中断处理程序,等高等级的中断处理程序执行完毕,再回来执行前一个中断出来程序的剩余部分
4.2、中断抢占的时序图分析
- interrupt_1可以抢占interrupt_0
4.3、中断抢占的优缺点
- 优点:
- 支持中断抢占(中断嵌套),可以保证紧急的中断被优先处理,提供系统的响应实时性
- 缺点:
- 中断嵌套会让中断响应的过程变得复杂,出现问题更难分析
- 中断嵌套会同时保存多个现场,需要开辟更大空间的栈
5、中断咬尾
5.1、中断咬尾概念
- CLIC中断机制的中断咬尾处理伪代码(以M特权模式为例)
interrupt_1:
csrrs rd, mnxti, rs1
mret
5.2、中断咬尾时序图分析
- 上面的时序图,处理了三个中断,但是只有一次保存现场、恢复现场的操作
- 这个时序图,在进入中断后,保存完现场后就立马查询当前处于挂起态的中断,选择最高优先级的中断进行处理
6、中断抢占和中断咬尾的对比
- 共同点:
- 中断咬尾和中断抢占都是在已经响应某个中断之后才发生
- 不同点:
- 中断抢占:发生的中断的特权模式或者中断等级比当前响应的中断高,可以打断当前中断的执行
- 中断咬尾: 发生的新中断不能够打断当前响应中断的执行
- 补充:中断抢占和中断咬尾时可以同时存在的。比如:在中断咬尾时过程中,发生了中断抢占