中断等待和异常处理优化

来源:互联网 发布:法国小哥知乎 编辑:程序博客网 时间:2024/05/21 06:00

<1>中断等待

中断等待表示从中断请求开始到中断处理开始执行间的时间。

对于Cortex-M处理器,若中断时零等待的,而且系统设计允许取向量和压栈同时执行,则中断等待为12个周期,其中包括寄存器压栈、取向量以及取中断处理指令(这是最理想的情况)。


<2>多周期指令执行期间产生中断

若在处理器执行多周期指令(如整数除法)时产生中断请求,该指令可能会被丢弃且在中断处理结束后重新执行。这种设计还适用于加载双字(LDRD)和存储双字(STRD)指令。


<3>末尾连锁

若某个异常A产生时处理器正在处理另一个具有相同或者更高优先级的异常B,A异常就会进入挂起状态。在处理器执行完B异常处理后,它可以继续执行A异常。处理器不会重新出栈和压栈,而是跳过该过程并尽快执行A异常。这样,两个异常处理间隔时间就会降低很多。对于无等待状态的存储器系统,末尾连锁的中断等待时间仅为6个时钟周期。


<4>延迟到达


<5>出栈抢占


<6>惰性压栈

原创粉丝点击