Vanadis: Enable true Out-of-Order execution for RoCC instructions#2603
Vanadis: Enable true Out-of-Order execution for RoCC instructions#2603yuebanabn wants to merge 1 commit intosstsimulator:develfrom
Conversation
1. Implement Register Renaming for RoCC 2. Delayed Dispatch Mechanism 3. Operand Readiness Check in Execute Stage 4. Correct Write-back
|
Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging |
|
This may exacerbate a long-standing issue with the Vanadis-RoCC interface, potential speculative execution of RoCC instructions. If you look at the BOOM core documentation it states that RoCC instructions should now issue until they become non-speculative (https://docs.boom-core.org/en/latest/sections/reorder-buffer.html#point-of-no-return-pnr, https://docs.boom-core.org/en/latest/sections/execution-stages.html#the-rocket-custom-co-processor-interface-rocc) ensuring no problems from instructions with side effects. This has been something I've been meaning to fix for a while but it hasn't been a huge issue because as you point out the RoCC instructions pretty aggressively stall the pipeline. Could you incorporate that non-speculative dispatch into these changes? |
|
Thanks for the excellent feedback and pointing out this critical issue. I agree completely. |
Fixes #2602
Summary
This PR overhauls the
VanadisRoCCInterfaceintegration within the processor pipeline to support true Out-of-Order (OoO) execution. Previously, RoCC instructions were handled sequentially with immediate operand reading at the Issue stage and direct architectural register write-back, which artificially serialized execution and introduced RAW/WAW/WAR hazards.Technical Details
This PR implements the following changes to align RoCC instruction handling with standard Vanadis functional units:
Register Renaming for RoCC (
assignRegistersToInstruction):rd. This resolves WAW and WAR hazards.Delayed Dispatch Mechanism (
allocateFunctionalUnit):pushto the RoCC interface during the Issue stage.rocc_wait_queues_to hold issued RoCC instructions that are waiting for source operands (acting as a reservation station).Operand Readiness Check (
performExecute):rocc_wait_queues_.pendingIntWrites).Correct Physical Register Write-back:
performExecute.Impact
These changes allow the Vanadis CPU to continue issuing independent instructions while RoCC instructions are waiting for operands or executing long-latency tasks. This significantly improves the accuracy of performance modeling for heterogeneous systems.
Testing