coreblocks icon indicating copy to clipboard operation
coreblocks copied to clipboard

Skip processing of long operations in FUs when side effects are disabled

Open piotro888 opened this issue 1 year ago • 1 comments

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

piotro888 avatar Oct 30 '23 16:10 piotro888

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.

tilk avatar Oct 30 '23 19:10 tilk