Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

retirement: Disable side effects on exception (proposed corrections) #512

Merged
merged 4 commits into from
Nov 18, 2023

Conversation

tilk
Copy link
Member

@tilk tilk commented Nov 15, 2023

This is an updated version of #493, created to discuss possible solutions to the problems in that PR. This branch is intended to be merged into #493 by @Arusekk.

Changes introduced:

  • New LSU from DummyLSU refactored again #511.
  • Combinational side_fx signal in retirement, to fix the issue reported by @piotro888.
  • FRAT rename calls in retirement moved to a separate transaction, to avoid mutual locking of retirement and renaming during normal core operation. Verified in benchmarks that there is no loss in IPC.

@tilk tilk changed the title retirement: Disable side effects on exception retirement: Disable side effects on exception (proposed corrections) Nov 15, 2023
Copy link
Member

@piotro888 piotro888 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. LSU and layouts.py changes integrated very nicely here :)
Is there a reason why it is a draft PR?

@piotro888
Copy link
Member

FRAT rename calls in retirement moved to a separate transaction, to avoid mutual locking of retirement and renaming during normal core operation. Verified in benchmarks that there is no loss in IPC.

I have a (unrelated to this PR) side question looking at this solution.
We call ExceptionCauseRegister.report method from multiple FUs in that way:

            with m.If(res["exception"]):
                self.report(m, rob_id=current_instr.rob_id, cause=res["cause"])

Doesn't it cause conflicts in parent Transactions and delay different FUs step from working at the same time? Or is it the If also guarding the conflict condition? I'm asking only about case where there are no exceptions reported.
If exceptions are reported those calls even should block each other - to guarantee that when instruction with exception reaches retirement, then ExceptionCauseRegister is properly set. (so if this is a problem for normal operation, same solution with Forwarder can't be used there)

@tilk tilk marked this pull request as ready for review November 18, 2023 14:19
@tilk
Copy link
Member Author

tilk commented Nov 18, 2023

Yes, the use of report here can possibly cause problems when report will be used in more places. As this doesn't affect the core too much right now, this issue is left for the future.

@tilk tilk merged commit 53c03fb into master Nov 18, 2023
6 checks passed
@tilk tilk deleted the tilk/lazy-exc-2 branch November 18, 2023 16:28
@tilk tilk added this to the Implement machine mode ISA milestone Nov 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants