coreblocks
coreblocks copied to clipboard
Skip processing of long operations in FUs when side effects are disabled
issue not valid before: merge of #493
When side effects are disabled and core is flushed, long instructions such as division or memory read requests are still executed. It would be nice to skip executing all multi-cycle instructions, and return some dummy result immediately (faster flush and recovery time).
In case of multi-cycle operations other than LSU, operations in progress could be discarded as further optimization.
Alternative solution would be to skip delegating tasks to FUs entirely and use some bypass when side effects are disabled, but I think it defeats the simplicity goal of interrupt implementation (and possibly too large synthesized hardware penalty?)
EDIT: also waiting for precommit can be skipped in CSR unit
I think that optimizations like this should be done after the full implementation of exceptions is there, so that we can get a better picture of how they affect both synthesis and IPC.