一知半解 · 2020年01月03日

Asynchrous External Data Abort in ARMv7

以Cortex-A7 CPU为例:

如果在程序执行过程中:发生了一个Asynchrous External Data Abort,它会很快进入Data Abort handler吗?

(Synchrous Data Abort会立即进入Data Abort handler.)

不清楚Asynchrous external data abort,什么时候才会进入Data abort handler!

1 个回答 得票排序 · 时间排序
潮声隔雨深 · 2020年01月03日

应该是很快就进入Data Abort handler的,

所谓ansynchrous 是指和当前执行的指令没有关系,例如一个写已经写到buffer里面了,对于cpu来讲已经完成了,但是后来从buffer里往downstream写的时候出错了,这个就是async的data abort了。

如果是读,cpu的load指令会一直hold在那里,直到数据回来,这个时候的出错就是sync的abort了,因为cpu知道哪个指令错了。

所有的中断处理都是要求及时处理的,至于在哪个cycle进入handler,取决于cpu的microarchi和cpu所处的状态,例如在关中断时就需要等着。

async和sync的一个区别在于ln寄存器记录的值是否是handler处理完之后可以恢复执行的点。

你的回答