Timing difference between async. interrupts and sync exceptions? #1369
Replies: 2 comments 1 reply
-
|
So in this architecture, async. interrupt is handled synchronously. Right? |
Beta Was this translation helpful? Give feedback.
-
|
Just as a general overview: Synchronous exceptions always occur synchronously to a specific instruction (for example an illegal instruction, a misaligned load/store address, etc.). Hence, the instruction was executed and raised an exception. The exception program counter ( Asynchronous exceptions (= interrupts) occur "at some point" - they are not correlated with a specific instruction. In the case of an interrupt, the exception program counter (
That depends on the software. If, for example, the exception was triggered by a user thread in an RTOS (e.g. Zephyr), then the thread is terminated. In bare metal/machine mode software, this is somewhat more complicated. If the instruction is executed again, the exception occurs again.
What exactly do you mean by "is handled synchronously"? 🤔 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi
As I understand, in case of happening interrupts and exceptions, the current instruction is completed first. But the reason that trap_ctrl.pc is filled by pc in case of exception is that the current instruction was unsuccessful and it should be re-executed after trap handling. Is this right?
-- exception program counter: async. interrupt or sync. exception? --
trap_ctrl.pc <= exe_engine.pc2 when (trap_ctrl.cause(trap_ctrl.cause'left) = '1') else
exe_engine.pc;
Beta Was this translation helpful? Give feedback.
All reactions