fix(loadUnit): rollback should be used for flush #3913
+1
−1
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.
According to the backend instructions, currently, we have a total of three signals that can notify the backend to generate a flush pipe:
flushPipe
,replayInst
, androllback
Among these,
flushPipe
andreplayInst
will be combined into the same flush signal in the backend, and the flush will be generated only when the command reaches the Rob dequeue pointer.The
rollback
signal will flush as soon as it is sent, so flushing the pipe via therollback
signal is faster.Currently in MemBlock, store/load MisalignBuffer will flush via
flushPipe
, RAR violations and mismatch of virtual and physics addresses in the forward will flush via bothflushPipe
androllback
, and RAW and uncached nack will flush viarollback
.When
flushPipe
androllback
are triggered at the same time,flushPipe
is triggered when the rob dequeue pointer is selected, rather thanrollback
being triggered immediately.This commit removes the
flushPipe
signal in the RAR violation and the mismatch of virtual and physics addresses in the forward, and only triggers flush throughrollback
.Any subsequent flushes that may occur should give priority to whether they can be triggered immediately via the
rollback
signal, andflushPipe
/replayInst
should only be used if a non-speculative flush is required.The
flushPipe
generated by store/load MisalignBuffer is temporarily retained, considering that store/load MisalignBuffer is actually being refactored.