ARM中FIQ(快速中断)比IRQ(普通中断)响应快的原因
Posted 代二毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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时就少一次跳转。
以上是关于ARM中FIQ(快速中断)比IRQ(普通中断)响应快的原因的主要内容,如果未能解决你的问题,请参考以下文章