ARM中FIQ(快速中断)比IRQ(普通中断)响应快的原因

什么是FIQ和IRQ

FIQ(快速中断)和IRQ(普通中断)是ARM处理器里的两个处理器模式,ARM总有7种处理模式。两种模式都是用来处理中断的,中断这个概念就不在这里赘述了。如果对ARM的异常处理机制和寄存器不熟悉的建议先看博客《ARM的37个寄存器和异常处理机制详解》,以下的内容会涉及到相关概念。

FIQ和IRQ的区别

本质上来说两者都是中断,但是FIQ处理的优先级比IRQ更高,FIQ的相应时间也比IRQ更快,简单来说FIQ就是IRQ里的VIP,享有特权。在ARM中,一般可以将某一个中断设置为FIQ,被设置为FIQ的中断在发生时可以插队,下一个处理的中断就是FIQ,有的甚至可以直接打断当前处理的IRQ,这里分为抢占式和非抢占式。

中断为什么要分为FIQ和IRQ

现在的系统是需要频繁和用户进行交互的,用户的体验很大部分取决于响应时间,试想一下,你点一下鼠标系统要一分钟才响应,你会是怎样的感受。系统是不知道什么时候会发生中断,当有多个中断产生时,系统通常会按照中断发生的先后顺序去处理中断。但是中断之间的紧急程度是不同的,比如现在产生两个中断,一个是后台程序产生的,一个是用户点击了一下鼠标。如果先处理后台程序产生的中断再响应鼠标,用户会感觉系统好卡,响应很慢;其实后台程序慢一点处理也没有什么大不了,用户现在又不着急,这种情况我们就可以先去响应鼠标,把鼠标设置为FIQ,改善用户的体验感。

FIQ比IRQ响应快的原因

1.FIQ的处理优先级比IRQ更高,甚至可以打断正在执行的IRQ;
2.FIQ模式有自己独有的寄存器,而IRQ需要和其他模式共用寄存器,在中断处理的保护/恢复现场会更快;
3.在异常向量表中,FIQ处在最末尾。在异常向量表中IRQ只能保存中断处理程序的首地址,在发生IRQ时需要一次跳转;而FIQ处在最末尾,所以可以直接将FIQ模式下的中断处理程序紧接着存放,这样在处理FIQ时就少一次跳转。

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正在起飞的蜗牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值