How does Cascade handle complex software situations such as real time interrupts, OS effects (especially Linux), self-modifying code, etc.?
The main processor continues to receive real time interrupts even when the coprocessor is active, so system latency is not impacted. However, interrupt routines must not rely on a memory state that is being updated by the coprocessor. Because the interrupt is an asynchronous event, special attention must be paid to state synchronization even if the code is being run on the main processor. Cascade does not handle self-modifying code. Such code is quite rare in modern software systems, with the possible exception of program loader applications. The Cascade coprocessor performs algorithmic acceleration and has no direct interaction with the operating system. Any function calls performed by the coprocessor that result in operating system interaction are passed to the main processor for execution.