Checkpointing part 1: CheckpointRAT, Scheduler integration #777
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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):
For future PR: