以RISC-V架构的CLIC中断机制讲解:中断咬尾、中断抢占、中断晚到

1、中断的相关属性

  • 中断所属特权模式(M模式 > S模式 > U模式)
  • 中断等级:决定是否能够抢占当前的中断
  • 中断优先级:影响中断的仲裁,优先级高时优先被响应
  • 中断编号:区分中断,影响中断的仲裁

2、中断仲裁:同时发生多个中断

在这里插入图片描述

  • 首先比较中断所属特权模式,高特权模式的中断比低特权模式的中断先响应
  • 特权特权模式相同再比较中断等级,高中断等级的中断比低中断等级的中断先响应
  • 中断等级相同再比较中断优先级,高中断优先级的中断比低中断优先级的中断先响应
  • 中断优先级相同再比较中断编号,中断编号较大的中断先响应

3、中断晚到

  • 中断晚到:当处理器对某一中断的响应还在早期,即入栈阶段,此时收到了高优先级中断的请求
  • 普通处理流程:
    • 先处理完当前中断,然后在处理高优先级的中断
    • 中断处理逻辑简单,但是实时性不高
  • 中断抢占:
    • 如果晚到的高优先级中断十分紧急,则按照中断抢占策略处理
    • 系统实时性高,但是中断处理逻辑复杂
  • 中断咬尾:
    • 如果晚到的中断不算很紧急,不足以打断当前中断的处理,但是可以在本次进入中断后,把晚到的中断一起处理
    • 节省了保护现场、恢复现场的步骤,提供中断处理效率

4、中断抢占

4.1、中断抢占概念介绍

  • 中断抢占的条件
    • 高特权模式的中断可以抢占低特权模式的中断,不管低特权模式的全局中断是否使能
    • 同特权模式的中断,高中断等级的中断要抢占低特权等级的中断,前提是特权模式的全局中断必须要使能
  • 中断抢占:
    • 前一个中断还在执行时发生了更高等级的中断,立马去执行高等级的中断处理程序,等高等级的中断处理程序执行完毕,再回来执行前一个中断出来程序的剩余部分

4.2、中断抢占的时序图分析

在这里插入图片描述

  • interrupt_1可以抢占interrupt_0

4.3、中断抢占的优缺点

  • 优点:
    • 支持中断抢占(中断嵌套),可以保证紧急的中断被优先处理,提供系统的响应实时性
  • 缺点:
    • 中断嵌套会让中断响应的过程变得复杂,出现问题更难分析
    • 中断嵌套会同时保存多个现场,需要开辟更大空间的栈

5、中断咬尾

5.1、中断咬尾概念

在这里插入图片描述

  • CLIC中断机制的中断咬尾处理伪代码(以M特权模式为例)
//中断入口
interrupt_1:
	//保存现场
	
	//执行中断1的处理程序
	
	//判断当前是否还有处于挂起态的中断,这条命令会打开特权模式的全局中断
	csrrs rd, mnxti, rs1
	
	//判断rd是否为零,如果rd不为零则rd中保存的是下一个要响应中断的中断处理程序入口地址,执行ISR
	//然后再返回上一条指令继续判断,知道rd为零,表示已经没有中断要响应

	//关闭当前特权模式的全局中断使能,保证恢复现场时不会被打断
	
	//恢复现场
	
	//中断返回
	mret

5.2、中断咬尾时序图分析

在这里插入图片描述

  • 上面的时序图,处理了三个中断,但是只有一次保存现场、恢复现场的操作
  • 这个时序图,在进入中断后,保存完现场后就立马查询当前处于挂起态的中断,选择最高优先级的中断进行处理

6、中断抢占和中断咬尾的对比

  • 共同点:
    • 中断咬尾和中断抢占都是在已经响应某个中断之后才发生
  • 不同点:
    • 中断抢占:发生的中断的特权模式或者中断等级比当前响应的中断高,可以打断当前中断的执行
    • 中断咬尾: 发生的新中断不能够打断当前响应中断的执行
  • 补充:中断抢占和中断咬尾时可以同时存在的。比如:在中断咬尾时过程中,发生了中断抢占
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值