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

Checkpointing part 1: CheckpointRAT, Scheduler integration #777

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

piotro888
Copy link
Member

@piotro888 piotro888 commented Jan 6, 2025

Finally after two months all problems were (hopefully) solved and first part of checkpointing is here 🎉

This PR contains CheckpointRAT - main data structure that substitutes F-RAT: does renaming, instruction tagging, saving checkpointed FRAT state and rollbacks.

It integrates into Scheduler with two stages - tag (allocating tags, tagging instructions, stalling on rollback in progress) and rename (saves checkpoint and does rename for valid instructions).
Additionally Frontend is prepared for resuming from rollbacks (but no Fetch yet), and Retirement is only retired freeing tags for now.

No rollbacks are currently made, but CheckpointRAT is integrated with Scheduler in its final form, that is tested in checkpointing test on SchedulerTestCircuit, that simulates Frontend, FBs, Branch rollbacks, ROB and Retirement with targeted changes, and verifies register renaming and retiring of instructions only from correct speculation path.

TODO (draft):

  • Clean up code
  • Minor CRAT imporvements
  • Submit Transactron PRs
  • Some docstrings missing

For future PR:

  • Integrate with Fetch
  • Integrate with JumpBranch
  • Support rollbacks in ExceptionCauseRegister
  • Support in Retirement (interaction with exceptions)

@piotro888 piotro888 added enhancement New feature or request microarch Involves the processor's microarchitecture labels Jan 6, 2025
@piotro888 piotro888 force-pushed the piotro/checkpoint-clean branch from 8231f76 to e8cf602 Compare January 25, 2025 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request microarch Involves the processor's microarchitecture
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant