CPU是如何实现FIQ与IRQ的不同处理的?
在arm中专门为FIQ与IRQ设置了两个异常模式。当中断控制器将对应的中断信息发给CPU时,CPU就会判断出这是FIQ还是IRQ,进而进入不同的异常模式。
其中FIQ与IRQ的4大步三小步中的区别在于:
FIQ要关闭所有异常,而IRQ除了FIQ其它都关闭了,也就是说IRQ可以被FIQ中断。
为何FIQ比IRQ快?
1.因为在ARM架构中专门为FIQ模式下添加了r8-r12这5个特殊寄存器。
所以,进入FIQ模式不再需要将r8-r15保存操作,且可以利用这5个寄存器去保存其它需要保存的寄存器,而免去压栈入栈操作。
2.FIQ在中断向量表的入口是在最后,它存放的直接是FIQ的处理指令。而不用再跳转到其他地方。